📦 Повернення відправнику: Чому ваші функції не повинні робити все

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

У чому проблема?

Коли функція намагається виконати занадто багато завдань, ми називаємо її God функцією. Вона стає універсальним інструментом, що призводить до проблем. Така функція:

  • Порушує принцип єдиної відповідальності
  • Важко повторно використовувати в інших контекстах
  • Ускладнює тестування і налагодження

Уявіть, що вам потрібно викликати таксі, щоб воно одночасно возило вас, готувало їжу та навчало математики — абсурдно, правда? Та сама логіка працює й тут.

Розділімо це

Щоб виправити ситуацію, потрібно розбити великі функції на менші з чітко визначеною метою.

Приклад:

// Погано: робить забагато
function processOrder(order) {
validate(order);
saveToDatabase(order);
sendConfirmationEmail(order);
}
// Добре: розділяємо обов'язки
function processOrder(order) {
if (!validate(order)) return;
saveOrder(order);
notifyUser(order);
}

Менші функції:

  • Легше тестувати
  • Створюють чистішу архітектуру
  • Сприяють повторному використанню в програмі

На що варто звертати увагу

  • Якщо ваша функція має більше 20–30 рядків, подумайте, чи не потрібно її розділити.
  • Чи виглядає вона як список справ? Якщо так — розділіть її.
  • Чи можна описати її завдання в одному реченні? Якщо ні — вона робить забагато.

Остання думка

Добрі функції схожі на хороших членів команди: вони виконують одну задачу і роблять це добре. Тому наступного разу, коли будете писати функцію, запитайте себе — не прошу я її робити забагато?

Чистий код починається з чітких, зосереджених функцій. Повертайте додаткову роботу до правильного відправника.

Перекладено з: 📦 Return to Sender: Why Your Functions Shouldn’t Do Everything