Да, monkeypatching очень полезен!
Почему-то имена очень сильно влияют на восприятие людей. Назовите это «monkeypatch», и это звучит плохо, назовите это «оперативное исправление» или «исправление на лету», и это звучит хорошо.
Независимо от этого, я думаю, что возможность изменять методы / атрибуты / функции во время выполнения - очень полезная вещь. Даже люди, использующие javascript, используют его весь день, не зная об этом.
Например:
button.onclick = function(e) { ...}
Эта простая линия иллюстрирует тот факт, что вы меняете поведение кнопки. Это было разработано таким образом. Точно так же вы можете изменить любую другую функцию, но это было бы глупо.
Теперь по вопросу доставки исправлений таким образом ... ну ... почему бы и нет. Вам просто нужно скачать маленький патч вместо большого релиза. Черт, вы могли бы даже исправить сервер, не останавливая его, отлично! И затем, однажды, вы также можете получить последний выпуск для большего обновления. Справедливо. Так что да, я голосую за «исправления во время выполнения» как за хорошую вещь.
Интересно, что некоторые языки, такие как Erlang, были даже построены вокруг этой концепции. Возможность обновления сервера на лету.
Конечно, в конце концов, как и во всем остальном, все зависит от того, как вы это используете. Вы можете сделать замечательные ОО вещи и дерьмовый, это все то же самое.
РЕДАКТИРОВАТЬ:
Позвольте мне добавить несколько различий в регистре, будь то исправление вашей собственной библиотеки или сторонней библиотеки .
... в основном то, что вы делаете с таким патчем, это исправление ошибки вашей собственной или сторонней библиотеки. В любом случае это полезно. Для вас, это позволяет вам доставить исправление на лету. Что касается стороннего, либо вы ждете (несколько месяцев?), Пока они не исправят это самостоятельно, либо вы делаете это сейчас самостоятельно. (вы все равно можете отправить им патч, чтобы они исправили его на своей стороне). Когда они выпустят свою следующую версию lib с исправленной проблемой, вы все равно можете, если хотите, обновить библиотеку и удалить патч на вашей стороне.
Теперь, конечно, если вы используете патч, чтобы изменить поведение библиотеки и оттолкнуть ее цель / способ работы, то, очевидно, это и есть путь к катастрофе. Даже обезьяна увидит это ... ну, я надеюсь. ;)