これはより一般的な質問であり、言語固有のものですが、python ncurses モジュールで遊んでいるときにこの問題に遭遇しました。ロケール文字を表示し、それらを文字として認識させる必要があったため、curses モジュールのいくつかの関数/メソッドにモンキー パッチを適用しました。
これは、機能するとしても、高速で醜いソリューションと私が呼ぶものでした。そして、変更は比較的小さかったので、何も台無しにしていないことを願っています. 私の計画は別の解決策を見つけることでしたが、それが機能し、うまく機能しているのを見て、対処しなければならなかった他の問題に進みました。これにバグがなければ、決して解決しません改善する。
しかし、より一般的な質問が私に現れました-明らかに、一部の言語では、クラス内のコードの大きなチャンクをモンキーパッチすることができます。これが自分だけのコードであるか、変更が小さい場合は問題ありません。ただし、他の開発者が私のコードを使用した場合、彼は私がよく知られたモジュールを使用していることを知っているので、以前と同じように機能すると想定できます。次に、このメソッドは突然、本来の動作とは異なる動作をします。
では、非常に主観的な話ですが、モンキー パッチを使用する必要がありますか。どのように文書化する必要がありますか?
編集:@ゲルダのために:
モンキー パッチは、コード自体を変更することなく、実行時にコードの一部の動作を動的に変更する機能です。
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/")