Дублирование кода дешевле, чем неверные абстракции

Большинство разработчиков рано узнают о принципе DRY. Do Not Repeat Yourself.

Это правило имеет смысл. Оно предотвращает ошибки и экономит время.

Но многие разработчики следуют этому правилу слишком строго. Они пытаются объединить всё в одну функцию или класс. Это приводит к избыточному проектированию.

Когда вы насильно втискиваете две разные логики в одну абстракцию, вы создаете проблемы. Вы добавляете сложности. Вы делаете код трудночитаемым.

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

Если вы дублируете код, вы точно знаете, где находится логика. Если вам нужно изменить одну часть, вы меняете её именно там.

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

Следуйте этим правилам, чтобы обезопасить себя:

  • Пишите код под текущую задачу.
  • Прежде чем создавать абстракцию, дождитесь, пока паттерн повторится трижды.
  • Ставьте читаемость выше экономии нескольких строк кода.
  • Примите тот факт, что некоторое дублирование — это нормально.

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

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