Я уверен, что вы столкнулись с ситуацией, когда вам нужно было исправить фрагмент кода, который:

  • это не ты написал
  • не имеет четкого набора требований или требования ясны, но код излишне сложен (на первый взгляд кажется, что вы столкнулись со страшным «большим комом грязи»)
  • Никто больше не знает точных требований, поэтому вам придется реконструировать поведение из кода.
  • Тесты отсутствуют или тривиальны и не помогают понять, что должен делать этот фрагмент кода.

Мой первый вопрос здесь заключается в том, чтобы понять, где разрыв между исправлением и переписыванием. Я предпочитаю переписывать код, если:

  • помимо необходимости исправления, есть также проблемы с производительностью
  • код нужно часто исправлять/менять
  • код является активом компании
  • сложность кода выставляется клиентам
  • текучка кодеров высокая

Помните, что:

Отладка в два раза сложнее, чем написание кода. Следовательно, если вы пишете код максимально умно, вы по определению недостаточно умны, чтобы его отлаживать.
— Керниган и Плаугер в «Элементах стиля программирования»

Попробуем добавить немного информации. Плюсы и минусы перезаписи вместо исправления:

Минусы:

  • Время/стоимость: переписывание требует времени, возможно, больше, чем «быстрое и грязное исправление». Реальный анализ затрат здесь таков: «Насколько быстрее мы вносили бы исправления, если бы у нас была чистая кодовая база?». Сколько исправлений мы выполняем каждый год?

Плюсы:

  • Кодировщикам не придется работать над «большим комком грязи»: это вызывает разочарование и, в конце концов, снижает производительность (время/стоимость).
  • Новая кодовая база, вероятно, будет меньше (отложения требований будут очищены), поэтому нужно будет поддерживать меньше тестов (время/стоимость).
  • Новая кодовая база, вероятно, будет быстрее (Стоимость–)
  • У новичков будет короткое время, чтобы освоиться с новой кодовой базой ( старая кодовая база Время/Стоимость —)

Так что, в конце концов, все плюсы переписывания приводят к меньшему времени на обслуживание/улучшения и меньшим затратам. В итоге Качество бесплатно (https://www.stellman-greene.com/2006/03/29/quality-really-is-free/) по словам этих ребят.