Tak, monkeypatching jest bardzo przydatny!
Jakoś imiona wydają się mieć duży wpływ na postrzeganie ludzi. Nazwij to „monkeypatch” i brzmi źle, nazwij to „hot fix” lub „on-the fix” i brzmi dobrze.
Niezależnie od tego uważam, że możliwość zmiany metod / atrybutów / funkcji w czasie wykonywania jest bardzo przydatną rzeczą. Nawet javascript używają go przez cały dzień, nie wiedząc o tym.
Na przykład:
button.onclick = function(e) { ...}
Ta prosta linia ilustruje fakt, że zmieniasz zachowanie przycisku. Zostało tak zaprojektowane. Podobnie możesz zmienić każdą inną funkcję, ale byłoby to niemądre.
A teraz pytanie dotyczące dostarczania łat w ten sposób ... no cóż ... dlaczego nie. Musisz tylko pobrać małą łatkę zamiast dużej wersji. Cholera, możesz nawet załatać serwer bez zatrzymywania go, świetnie! A pewnego dnia możesz także pobrać najnowszą wersję, aby uzyskać większą aktualizację. Słusznie. Tak więc głosuję na „łaty czasu wykonywania” jako dobrą rzecz.
Co ciekawe, niektóre języki, takie jak Erlang, były nawet oparte na tej koncepcji. Możliwość aktualizacji serwera w locie.
Oczywiście ostatecznie i podobnie jak we wszystkich innych kwestiach, zależy od tego, jak z niego korzystasz. Możesz robić wspaniałe rzeczy OO i gówno, wszystko jest takie samo.
EDYTOWAĆ:
Pozwól, że dodam pewne rozróżnienie spraw, niezależnie od tego, czy łatasz własną bibliotekę, czy bibliotekę innej firmy .
... w zasadzie to, co robisz z taką łatką, naprawia błąd w bibliotece własnej lub innej firmy . W obu przypadkach jest to przydatne. Na własną rękę pozwala ci to naprawić w locie. W przypadku strony trzeciej albo czekasz (kilka miesięcy?), Aż sami to naprawią, albo robisz to teraz samodzielnie. (nadal możesz przesłać im łatkę, aby naprawili ją po swojej stronie). Po wydaniu kolejnej wersji lib z naprawionym problemem nadal możesz, jeśli chcesz zaktualizować bibliotekę i usunąć łatkę po swojej stronie.
Teraz, oczywiście, jeśli użyjesz łatki, aby zmienić zachowanie lib i zrazić jego cel / sposób działania, to oczywiście jest to przepis na katastrofę. Nawet małpa to zobaczy ... mam nadzieję. ;)