Дублирование кода против неверных абстракций

Разработчики часто сталкиваются с выбором.

Вам приходится выбирать между принципом Don't Repeat Yourself или допущением некоторого дублирования кода.

DRY — это основополагающее правило проектирования программного обеспечения. Но чрезмерная погоня за ним порождает новую проблему: вы создаете неверную абстракцию.

Неверная абстракция обходится дороже, чем дублирование кода.

Мы хотим писать элегантный код. Мы хотим создавать переиспользуемую логику. Мы хотим исправить баг в одном месте и увидеть, что он исправлен везде. Эта цель кажется правильной.

Но преждевременная абстракция убивает скорость разработки проекта. Она портит легкость поддержки вашего кода.

Когда вы создаете абстракцию слишком рано, вы сталкиваетесь со следующими проблемами:

  • Повышенная сложность. Плохие абстракции добавляют слои путаницы.
  • Жесткий код. Становится трудно изменить одну часть, не сломав другие.
  • Скрытая логика. Вы тратите больше времени на отслеживание кода, чем на его написание.

Иногда дублирование — это прагматичный выбор. Оно сохраняет ваш код простым и понятным. Это позволяет изменять части вашей системы независимо друг от друга.

Не создавайте универсальное решение для проблемы, которую вы еще не до конца понимаете. Подождите, пока паттерн не станет очевидным.

Источник: https://dev.to/kelvin_kariuki_20f4bec616/developer-take-on-code-duplication-is-far-cheaper-than-the-wrong-abstraction-2016-2k3n