Ceci est une question plus générale que spécifique à la langue, bien que je me suis heurté à ce problème en jouant avec le module python ncurses. J'avais besoin d'afficher les caractères régionaux et de les faire reconnaître comme des caractères, donc je viens d'appliquer rapidement quelques fonctions/méthodes à partir du module curses.Pour singe-patch ou ne pas?
C'est ce que j'appelle une solution rapide et laide, même si cela fonctionne. Et les changements étaient relativly petit, donc j'espère que je n'ai rien gâché. Mon plan était de trouver une autre solution, mais en voyant ça fonctionne et fonctionne bien, vous savez comment c'est, j'ai fait face à d'autres problèmes que j'ai dû affronter, et je suis sûr que s'il n'y a pas de bug, je ne fais le mieux. La question plus générale me paraissait cependant évidente - certains langages nous permettent de corriger de gros morceaux de code à l'intérieur des classes. Si c'est le code que je n'utilise que pour moi-même, ou si le changement est petit, ça va. Que se passe-t-il si un autre développeur prend mon code, il voit que j'utilise un module bien connu, donc il peut supposer qu'il fonctionne comme d'habitude. Ensuite, cette méthode se comporte soudain différemment alors il devrait. Donc, très subjectif, devrions-nous utiliser des correctifs de singe, et si oui, quand et comment? Comment devrions-nous le documenter?
edit: pour @guerda:
Monkey-patcher est la capacité de changer le comportement dynamicly d'un morceau de code au moment de l'exécution, sans modifier le code lui-même.
Un petit exemple en Python:
import os
def ld(name):
print("The directory won't be listed here, it's a feature!")
os.listdir = ld
# now what happens if we call os.listdir("/home/")?
os.listdir("/home/")
Pourriez-vous s'il vous plaît expliquer brièvement "patch de singe" pour les débutants? Merci! – guerda
+1 c'est subjectif et argumentatif, comme la plupart des bonnes questions sur SO –
Connexe: http://stackoverflow.com/questions/2225698/to-monkeypatch-or-not-to-monkeypatch-that-is-the-question –