В програмуванні важливо, щоб функція виконувала одну конкретну задачу — і робила це добре. Проте часто ми намагаємось напхати функцію великою кількістю логіки, побічних ефектів, обробки даних, роботи з помилками та інших завдань. Результат — код, який важко зрозуміти, тестувати та виправляти.
У чому проблема?
Коли функція намагається виконати занадто багато завдань, ми називаємо її 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