Дублювання коду дешевше за неправильні абстракції

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

Це правило має сенс. Воно запобігає помилкам і заощаджує час.

Але багато розробників дотримуються цього правила занадто суворо. Вони намагаються об'єднати все в одну функцію або клас. Це призводить до надмірного проектування (over-engineering).

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

Неправильна абстракція коштує дорожче, ніж невелике дублювання.

Якщо ви дублюєте код, ви точно знаєте, де знаходиться логіка. Якщо вам потрібно змінити одну частину, ви змінюєте її саме там.

Якщо ви використовуєте погану абстракцію, вам доведеться змінювати все, що з нею пов'язано. Ви ризикуєте зламати функції, які не мають жодного стосунку до вашого поточного завдання.

Дотримуйтесь цих правил, щоб уникнути проблем:

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

Перестаньте намагатися зробити кожен рядок коду ідеальним. Зосередьтеся на тому, щоб ваш код було легко змінювати.

Джерело: https://dev.to/kelvin_kariuki_20f4bec616/developer-take-on-code-duplication-is-far-cheaper-than-the-wrong-abstraction-3g0b