Так, маніпулювання дуже корисно!
Іноді імена здаються дуже впливовими на сприйняття людей. Назвіть це "monkeypatch", і це звучить погано, назвіть його "гарячим виправленням" або "виправленням на ходу", і це звучить добре.
Незалежно від цього, я думаю, що можливість зміни методів / атрибутів / функцій під час виконання - дуже корисна річ. Навіть користувачі JavaScript користуються ним цілий день, не знаючи цього.
Наприклад:
button.onclick = function(e) { ...}
Цей простий рядок ілюструє той факт, що ви змінюєте поведінку кнопки. Він був розроблений таким чином. Ви також можете змінити будь-яку іншу функцію, але це було б нерозумно.
Тепер щодо питання доставки патчів таким чином ... ну ... чому б ні. Вам просто потрібно завантажити невеликий патч замість великого випуску. Чорт забирай, ти навіть можеш виправити сервер, не зупиняючи його, чудово! А потім, одного дня, ви також можете отримати останню версію для більшого оновлення. Справедливо. Так що так, я голосую за "виправлення часу", як добру справу.
Цікаво, що деякі мови, такі як Ерланг, навіть будувались навколо цієї концепції. Можливість оновлення сервера на ходу.
Звичайно, врешті-решт, як і у всьому іншому, справа в тому, як ти ним користуєшся. Ви можете зробити чудові речі OO і лайно, це все одно.
Редагувати:
Дозвольте додати деякі відмінності у випадку, будь то виправлення власної бібліотеки чи сторонньої .
... в основному, те, що ви робите з таким патчем, - це виправлення помилки вашої власної або сторонньої бібліотеки. В будь-якому випадку це корисно. Для власного користування це дає змогу доставити виправлення на ходу. Для сторонньої сторони ви або чекаєте (кілька місяців?), Поки вони самі це не виправлять, або ви робите це зараз самостійно. (ви можете надіслати їм патч, щоб вони зафіксували його на боці). Коли вони випустять свою наступну версію lib із виправленою проблемою, ви все одно можете, якщо ви хочете оновити бібліотеку та видалити виправлення з вашої сторони.
Тепер, звичайно, якщо ви використовуєте патч, щоб змінити поведінку lib та відчужувати її мету / спосіб роботи, то, очевидно, це рецепт катастрофи. Навіть мавпа побачила б це ... ну, сподіваюся. ;)