はい、monkeypatchingは非常に便利です!
どういうわけか、名前は人々の認識に大きな影響を与えるようです。それを「monkeypatch」と呼ぶと音が悪く、「hot fix」または「on-the-fly fix」と呼ぶといいですね。
それとは別に、実行時にメソッド/属性/関数を変更する機能は非常に便利だと思います。JavaScriptの人でさえ、おそらく知らないうちに1日中使用しています。
例えば:
button.onclick = function(e) { ...}
この単純な行は、ボタンの動作を変更するという事実を示しています。そのように設計されました。同様に、他のすべての機能を変更することもできますが、そうするのはばかげています。
さて、そのようにパッチを提供するという質問のために...まあ...なぜだ。大きなリリースではなく小さなパッチをダウンロードするだけです。まあ、あなたはそれを止めることなくサーバーにパッチを当てることさえできる、素晴らしい!そして、ある日、より大きなアップデートのために最新のリリースを取得することもできます。けっこうだ。そう、私は良いこととして「ランタイムパッチ」に投票します。
興味深いことに、Erlangのような一部の言語は、この概念を中心に構築されていました。その場でサーバーを更新する機能。
もちろん、最終的には、他のすべてと同様に、それをどのように使用するかという問題です。あなたは素晴らしいオブジェクト指向のものとくだらないものを作ることができます、それはすべて同じです。
編集:
独自のライブラリにパッチを適用する場合でも、サードパーティのライブラリにパッチを適用する場合でも、いくつかのケースの区別を追加します。
...基本的に、このようなパッチで行うことは、独自のライブラリまたはサードパーティのライブラリのバグを修正することです。どちらの場合でも便利です。あなた自身のために、それはあなたがその場で修正を提供することを可能にします。サードパーティの場合は、自分で修正するまで(数か月?)待つか、自分で修正します。(あなたはまだ彼らにパッチを提出することができるので、彼らは彼らの側でそれを修正します)。問題が修正された次のlibバージョンをリリースしても、ライブラリを更新し、自分の側でパッチを削除する場合は、引き続きできます。
もちろん、パッチを使用してライブラリの動作を変更し、その目的/動作の方法を疎外する場合、明らかにそれは災害のレシピです。猿でさえそれを見るでしょう...まあ、私は願っています。;)