Рефакторинг

November 15, 2016

Рефакторинг тема как известно тонкая, поэтому сразу скажу - к переписыванию работающего продакшен-кода я отношусь отрицательно, как бы это не называлось. Правило "работает - не трогает" достаточно хорошо проверено временем.

Сейчас постараюсь пояснить, как мыслю. Представьте, что мы на оси времени находимся в точке А. Единственная объективная реальность - это тот код, который сейчас находится на продакшене (этим кстати мне нравится гитхаб-флоу, мастер - всегда в продакшене, в ветках - что хочешь то и делаешь, дело личное, точка опасности - мерж пул реквеста в мастер). Так вот в точке А, глядя на наш продакшен, мы видим проблемы кода и всегда примерно понимаем как выглядит точка B, в которой сегодняшний функционал был бы "идеально" выражен в коде.

Я уверен, что большая ошибка начинать движение в точку B (в принципе это и есть рефакторинг - изменение кодовой базой без изменения функционала). Время то движется вперед и вы оказываетесь в точке C с устаревшим кодом ("идеальным" кодом на момент A). В процессе движения выяснится, что точка B - тоже не совсем хороша. В голове - идея была хорошая, а в реализации оказалось не очень. Тогда начинаете движение в точку B', потом в B'' и так далее. Поэтому переписывание продакшен кода в моей системе ценности - в большинстве случаев ошибка, это работа на прошлое.

Что я предлагаю вместо этого. Допустим мы продолжим пилить новые фичи как сегодня. То наш код шатко-валко, вместе с нами, доползет до точки C. И для этого горемыки, так же будет "идеальный" код - точка D. Естественно это не точка (как и впрочем все остальные точки - не точки), это облачко возможных хороших реализаций той системы, которая будет в момент C. Так вот я твердо уверен, что нужно менять не сегодняшний работающий код, а менять привычки, которые приведут проект в более здоровую точку D.

У меня есть такая аналогия. Допустим человек решил привести себя в форму. Можно поступить хирургически, радикально. Быстро - но много побочных эффектов, жесткий отходняк. Либо человек меняет привычки: разбирается с режимом дня, правильно питается, регулярно занимается в зале. То есть по факту он ведет себя уже, прямо сейчас, как здоровый человек, но сегодняшнее состояние пока не очень.

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

comments powered by Disqus