這是更具體的問題,然後是語言特定的,但我在使用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