Я обсуждал принцип DRY (не повторяю себя), также известный как DIE (Duplication Is Evil), и есть голоса, что любое простое повторение кода всегда зло. Я хотел бы услышать ваше мнение о следующих моментах:
- Неопределенное будущее. Скажем, что у нас одинаковый код в двух местах. Ключ в том, что эти два места имеют только случайную коннотацию. Есть вероятность, что они будут меняться в будущем, потому что их контекст и семантика различны. Создание абстракции из этих мест не является дешевым, и если одно из этих мест изменится, разворот от абстракции будет еще более дорогим.
- читаемость. Существует сложное вычисление, которое включает несколько переменных или шагов. В другом месте кода есть еще один, который имеет некоторые части идентичные. Проблема в том, что если мы выберем общие части, читаемость расчета уменьшится, а созданная абстракция будет очень сложной, чтобы дать ей описательное имя. Хуже того, если какая-то часть алгоритма изменится в будущем, как в пункте 1.
Являются ли вышеупомянутые случаи хорошей причиной отказа от процесса абстракции и просто оставляют дублированный код в пользу риска будущих изменений или просто читаемости?