这是更具体的问题,然后是语言特定的,但我在使用python ncurses模块时遇到了这个问题。我需要显示区域设置字符并将它们识别为字符,所以我只是快速地从curses模块中修改了一些函数/方法。猴子补丁或不?
这就是我称之为快速和丑陋的解决方案,即使它有效。这些变化相对较小,所以我希望我没有搞砸任何事情。我的计划是找到另一个解决方案,但看到它的工作和运作良好,你知道它是怎么回事,我去了我不得不面对的其他问题,我敢肯定,如果没有错误,我永远不会使它更好。
虽然我看到了更一般的问题 - 显然有些语言允许我们在类内部修改大块代码。如果这是我仅用于我自己的代码,或者更改很少,那没关系。如果其他开发人员需要我的代码,他会发现我使用了一些众所周知的模块,因此他可以假设它已经适用。然后,这个方法突然表现出不同,然后它应该。
所以,非常主观,我们应该使用猴子修补,如果是的话,何时以及如何?我们应该如何记录它?
编辑:用于@guerda:
猴修补是动态地改变在执行时间一些一段代码的行为,而不改变代码本身的能力。
一个小例子在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/")
您能否简要解释一下新手“猴子补丁”?谢谢! – guerda 2009-01-06 09:05:44
+1这是主观的和议论性的,就像大多数好的问题上SO – 2010-02-24 21:40:52