@jsunderhood Из простого — удаляю старый код и убираю дубликаты.
Копипаста, кстати, не всегда однозначное зло:
bespoyasov.ru/blog/copy-past… twitter.com/myjsalterego/s…
Дублирование кода на ранних этапах может показать, как всё на самом деле работает, и какие паттерны мы ещё не увидели.
Удаление дублирования — это прогнозирование будущего. Чем больше исходных данных удастся собрать, тем точнее будет прогноз.
Чтобы не потерять места с копипастой, помечаю их коммент-флагом
DUPLICATE
.
После самого флага пишу, какую функциональность он дублирует. Это даёт флагу осмысленное и уникальное имя, по которому потом проще искать места для рефакторинга.Оно немного противоречит DRY:
ru.wikipedia.org/wiki/Don’t_repeat_yourself
...но экономит время в будущем.
Проще вынести действительно общую функциональность потом, чем управлять деталями почти одинаковых реализаций.
А вот старый код — действительно зло. Он отвлекает, а иногда и вводит в заблуждение.
Если я подозреваю, что код мне понадобится в будущем, я стараюсь удалять его атомарно: в рамках пул-реквеста или комита.
Тогда я смогу найти удалённое по истории и восстановить.
Это потребует каких-то ресурсов, но зато код будет чище и прямолинейнее. Пусть напрягается гит, короче.
То же могу сказать и про закомментированный код. Он как бы удалён, но как бы нет.
А когда и как его использовать — обычно никто не знает 😅
Лучше распрощаться с ним.