Pull to refresh

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

Reading time2 min
Views35K

Введение


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

Преамбула


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

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

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


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

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


HTML формируется в коде с помощью вызова некого printf. При чем с диким смешением флаговой логики «если такой-то флаг установлен и это число больше 1234, то выводим ...». Там же выводится javascript основываясь на тех же флагах. Много лет стоит TODO «Избавиться от этой кошмарной логики», но никто не исправляет этот участок. Оказывается он формирует не совсем корректный HTML и надо добавить новую логику, где-то в середине этого участка.
Only registered users can participate in poll. Log in, please.
А что делаете вы с таким кодом?
17.86% Не трогаем, он ведь работает270
23.81% Беспощадно искореняем360
54.3% Вносим изменения при появлении необходимости821
4.03% У нас нет устаревшего кода61
1512 users voted. 385 users abstained.
Tags:
Hubs:
Total votes 25: ↑19 and ↓6+13
Comments53

Articles