«Работает — не трогай». Стоит ли нарушать правила?

в 20:31, , рубрики: gtd, legacy, изменения, интеграция, код, наследование, разработка, рефакторинг, тестирование, метки: , , , , ,

Введение

Очень не хватало возможности ввести пользователей в контекст перед голосованием. Спасибо! И так

Преамбула

Работая со старым унаследованным кодом, порой встречаются достаточно проблемные участки, которые есть желание переписатьисправитьпеределать, но нет такой возможности. Этот код может быть с ошибками, которые не исправляются годами и с ними приходится мириться. Что делать с таким кодом?

Проблемы бывают разного рода. Начиная от проблем с читаемостьюлогикой, заканчивая реальными ошибками, утечками памяти, взаимными блокировками.

Такой код стараются фундаментально не менять, исправляются только локальные проблемы и ошибки. Правило «работает — не трогай» во всей своей красе. С другой стороны, если переписать или исправить этот код, то жить станет всем легче, но появляются проблемы:

  • Никто не понимает, как изменения отразятся на всей системе в целом;
  • Вероятность внести новые ошибки очень велика;
  • Появляется период стабилизации кода (также как и с новым кодом).

Я придерживаюсь позиции, что код надо постоянно развивать и совершенствовать. Старые участки переводить на рельсы новых технологий, как только в этом возникает необходимость. То есть, если возникла проблема или необходимость, то надо поправить код, а не изучать обходные пути (идеализирую, часто ограничением служит обратная совместимость). Конечно, в системе на некоторое время появляется нестабильность, вызванная возможным внесением ошибок, но для этого существует непрерывная интеграция, тестирование, выпуск версий.

Один из множества примеров

HTML формируется в коде с помощью вызова некого printf. При чем с диким смешением флаговой логики «если такой-то флаг установлен и это число больше 1234, то выводим ...». Там же выводится javascript основываясь на тех же флагах. Много лет стоит TODO «Избавиться от этой кошмарной логики», но никто не исправляет этот участок. Оказывается он формирует не совсем корректный HTML и надо добавить новую логику, где-то в середине этого участка.

А что делаете вы с таким кодом?

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Проголосовало 20 человек. Воздержалось 4 человека.

Автор: VaiMR

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js