Sì, la monkeypatching è molto utile!
In qualche modo, i nomi sembrano essere molto influenti sulla percezione della gente. Chiamalo "monkeypatch" e suona male, chiamalo "hot fix" o "fix al volo" e suona bene.
Indipendentemente da ciò, penso che la capacità di alterare metodi / attributi / funzioni in fase di esecuzione sia una cosa molto utile. Persino le persone javascript lo usano tutto il giorno senza forse saperlo.
Ad esempio:
button.onclick = function(e) { ...}
Questa semplice linea illustra il fatto che si modifica il comportamento del pulsante. È stato progettato in questo modo. Allo stesso modo, è possibile modificare ogni altra funzione, ma sarebbe sciocco farlo.
Ora, per la questione della consegna delle patch in questo modo ... beh ... perché no. Devi solo scaricare una piccola patch invece di una grande versione. Diamine, potresti persino patchare un server senza fermarlo, fantastico! E poi, un giorno, potresti anche recuperare l'ultima versione per un aggiornamento più grande. Giusto. Quindi sì, io voto per "patch di runtime" come una buona cosa.
È interessante notare come alcune lingue come Erlang siano state costruite attorno a questo concetto. La capacità di aggiornare un server al volo.
Naturalmente, alla fine, e come con tutto il resto, è una questione di come lo si usa. Puoi creare meravigliose cose OO e merdose, è lo stesso.
EDIT:
Consentitemi di aggiungere alcune distinzione tra maiuscole e minuscole, che si tratti di la propria libreria o di terze parti .
... in pratica, ciò che fai con una patch di questo tipo sta correggendo un bug della libreria tua o di di terze parti . In entrambi i casi è utile. Per il tuo, ti consente di consegnare una correzione al volo. Per uno di terze parti, o aspetti (diversi mesi?) Finché non lo risolvono da soli, o lo fai da solo. (puoi comunque inviare loro la patch, in modo che possano ripararla dalla loro parte). Quando rilasceranno la loro prossima versione di lib con il problema risolto, puoi ancora se vuoi aggiornare la libreria e rimuovere la patch dalla tua parte.
Ora, naturalmente, se si utilizza una patch per modificare il comportamento di una lib e alienare il suo scopo / modo di lavorare, ovviamente questa è una ricetta per il disastro. Anche una scimmia vedrebbe che ... beh, lo spero. ;)