🔥

Тред (@bespoyasov)


@jsunderhood Из простого — удаляю старый код и убираю дубликаты.
Копипаста, кстати, не всегда однозначное зло: bespoyasov.ru/blog/copy-past… twitter.com/myjsalterego/s…

Дублирование кода на ранних этапах может показать, как всё на самом деле работает, и какие паттерны мы ещё не увидели. Удаление дублирования — это прогнозирование будущего. Чем больше исходных данных удастся собрать, тем точнее будет прогноз.

Чтобы не потерять места с копипастой, помечаю их коммент-флагом DUPLICATE. После самого флага пишу, какую функциональность он дублирует. Это даёт флагу осмысленное и уникальное имя, по которому потом проще искать места для рефакторинга.

Оно немного противоречит DRY: ru.wikipedia.org/wiki/Don’t_repeat_yourself ...но экономит время в будущем. Проще вынести действительно общую функциональность потом, чем управлять деталями почти одинаковых реализаций.

А вот старый код — действительно зло. Он отвлекает, а иногда и вводит в заблуждение. Если я подозреваю, что код мне понадобится в будущем, я стараюсь удалять его атомарно: в рамках пул-реквеста или комита.

Тогда я смогу найти удалённое по истории и восстановить. Это потребует каких-то ресурсов, но зато код будет чище и прямолинейнее. Пусть напрягается гит, короче.

То же могу сказать и про закомментированный код. Он как бы удалён, но как бы нет. А когда и как его использовать — обычно никто не знает 😅 Лучше распрощаться с ним.