Копипаста в коде
Копипаста в коде — это не зло, а инструмент.
Не удаляйте дублирование сразу. Дайте ему показать вам, как всё на самом деле работает, и какие паттерны вы ещё не увидели.
Удаление дублирования — это прогнозирование будущего. Чем больше исходных данных удастся собрать, тем точнее будет прогноз.
Обычно я жду 3 повторов, чтобы начать чистить код. А чтобы не потерять места с копипастой, помечаю их коммент-флагом @DUPLICATE.
После самого флага пишу, какую функциональность он дублирует. Это даёт флагу осмысленное и уникальное имя, по которому потом проще искать места для рефакторинга. Выглядит так:
// @DUPLICATE: solves difficult problem
const someFunc = (a, b) => {
/* some sophisticated logic */
};
// @DUPLICATE: solves difficult problem
const duplicatesFunctionality = (a, b) => {
/* the same sophisticated logic */
};
Нет, я не против DRY. Я за то, чтобы использовать его с умом.
Да, утверждение холиварное. Сорри, если вдруг заполыхало.