Рефакторинг тема как известно тонкая, поэтому сразу скажу - к переписыванию работающего продакшен-кода я отношусь
отрицательно, как бы это не называлось. Правило "работает - не трогает" достаточно хорошо проверено временем.
Сейчас постараюсь пояснить, как мыслю. Представьте, что мы на оси времени находимся
в точке А
. Единственная объективная реальность - это тот код, который сейчас находится на продакшене
(этим кстати мне нравится гитхаб-флоу, мастер - всегда в продакшене, в ветках -
что хочешь то и делаешь, дело личное, точка опасности - мерж пул реквеста в мастер). Так вот в точке
А
, глядя на наш продакшен, мы видим проблемы кода и всегда примерно понимаем как выглядит точка B
,
в которой сегодняшний функционал был бы "идеально" выражен в коде.
Я уверен, что большая ошибка начинать движение в точку B
(в принципе это и есть рефакторинг -
изменение кодовой базой без изменения функционала). Время то движется вперед
и вы оказываетесь в точке C
с устаревшим кодом ("идеальным" кодом на момент A
). В процессе движения
выяснится, что точка B
- тоже не совсем хороша. В голове - идея была хорошая, а в
реализации оказалось не очень. Тогда начинаете движение в точку B'
, потом в B''
и так далее. Поэтому переписывание
продакшен кода в моей системе ценности - в большинстве случаев ошибка, это работа на прошлое.
Что я предлагаю вместо этого. Допустим мы продолжим пилить новые фичи как сегодня. То наш код
шатко-валко, вместе с нами, доползет до точки C
. И для этого горемыки, так же будет
"идеальный" код - точка D
. Естественно это не точка (как и впрочем все остальные точки - не точки), это
облачко возможных хороших реализаций той системы, которая будет в момент C
.
Так вот я твердо уверен, что нужно менять не сегодняшний работающий код, а менять
привычки, которые приведут проект в более здоровую точку D
.
У меня есть такая аналогия. Допустим человек решил привести себя в форму. Можно поступить хирургически, радикально. Быстро - но
много побочных эффектов, жесткий отходняк. Либо человек меняет привычки: разбирается с режимом дня,
правильно питается, регулярно занимается в зале.
То есть
по факту он ведет себя уже, прямо сейчас, как здоровый человек, но сегодняшнее состояние пока не очень.
Поэтому, как бы код не был плох, я считаю,
что нужно прежде всего разобраться какие привычки довели его до такого состояния и что нужно поменять, чтобы привести его
со временем в порядок.