Глава 6

DRY: у знания один источник

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

Отсюда важное следствие: два похожих фрагмента ещё не обязательно являются одним знанием. Они могут случайно выглядеть одинаково сегодня, но развиваться по разным причинам завтра. Проверка телефона в двух формах - это одно знание (формат задан правилом компании), а похожие проверки суммы в скидке и доставке - разные, потому что за ними стоят разные владельцы.

Единый источник - для знания, а не для символов. Если правило меняется, все его копии обязаны меняться вместе - вот их и стоит свести в одно место. Если фрагменты могут разойтись, их сходство пока только внешнее.

Отличить одно от другого помогает лаборатория: она задаёт правильный вопрос вместо соблазна "склеить похожее".

Интерактивная лаборатория 2

Дублирование знания или похожий код?

Дублирование знания: сведите правило в один источник. Это осмысленный DRY.
Проверка знаний

Когда DRY действительно нужен?

Соблазн объединить похожее особенно силён, когда абстракция кажется красивой. Здесь и нужен следующий принцип - AHA.

Ссылки