Реальная цена введения быстрого исправления заключается в том, что, когда кому-то другому нужно ввести второе быстрое исправление, он представит его на основе вашего собственного быстрого исправления. Таким образом, чем дольше будет действовать быстрое решение, тем более надежным оно станет. Довольно часто взлом занимает немного больше времени, чем делает все правильно, пока вы не встретите второй взлом, основанный на первом.
Итак, очевидно, что иногда необходимо (или кажется, что нужно) вводить быстрое исправление.
Одно из возможных решений, если ваш контроль версий поддерживает это, - это вводить вилку из источника всякий раз, когда вы делаете такой взлом. Если людей поощрять избегать кодирования новых функций в рамках этих специальных вилок «сделай это», то в конечном итоге будет больше работы по интеграции новых функций с вилкой, чем по избавлению от взлома. Однако более вероятно, что «хорошая» вилка будет выброшена. И если вы находитесь достаточно далеко от релиза, что создание такой вилки будет непрактичным (потому что двойная интеграция, о которой говорилось выше, не стоит), то вам, вероятно, в любом случае даже не стоит использовать хакерский метод.
Очень идеалистический подход.
Более реалистичное решение - сохранить вашу программу сегментированной на как можно больше ортогональных компонентов и время от времени полностью переписывать некоторые из компонентов.
Лучше спросить, почему хакерское решение плохое. Если это плохо, потому что снижает гибкость, игнорируйте его, пока вам не понадобится гибкость. Если это плохо, потому что это влияет на поведение программ, игнорируйте его, и в конечном итоге это станет исправлением ошибки, и БУДЕТ исправляться. Если это плохо, потому что выглядит некрасиво, игнорируйте его, пока взлом локализован.