Я только что наткнулся на статью « Правило трех » в википедии
Правило трех - это практическое правило рефакторинга кода, позволяющее решить, когда реплицируемый фрагмент кода должен быть заменен новой процедурой. В нем говорится, что код может быть скопирован один раз, но когда один и тот же код используется три раза, его следует извлечь в новую процедуру. Правило было введено Мартином Фаулером в Refactoring и приписано Дону Робертсу.
Я знаю, что это всего лишь практическое правило, но почему рекомендуется проводить рефакторинг только после второго дублирования? Есть ли обратная сторона рефакторинга, когда мы пишем первое дублирование?