главная/Декомпозиция в коде
Декомпозиция кода

Декомпозиция в коде

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

Вместо одного огромного файла/функции на 500 строк — делаем несколько маленьких, каждая из которых отвечает за свою конкретную задачу.

Зачем нужна декомпозиция

  • Читаемость — код проще понимать.
  • Поддерживаемость — легче вносить изменения.
  • Тестируемость — маленькие функции проще покрывать тестами.
  • Повторное использование — куски логики можно переиспользовать.
  • Снижение связанности — меньше «магии» и скрытых зависимостей.

Простой пример

Без декомпозиции

function createOrder($userId, $products) {
    // проверка пользователя
    $user = findUser($userId);
    if (!$user) {
        throw new Exception("User not found");
    }

    // подсчёт суммы
    $total = 0;
    foreach ($products as $product) {
        $total += $product['price'] * $product['quantity'];
    }

    // создание заказа
    $orderId = saveOrder($userId, $total);

    // отправка email
    sendEmail($user['email'], "Order created");

    return $orderId;
}

Тут всё в одной функции — проверки, расчёты, сохранение, уведомления.

С декомпозицией

function createOrder($userId, $products) {
    $user = getValidatedUser($userId);
    $total = calculateOrderTotal($products);
    $orderId = saveOrder($userId, $total);

    notifyUserAboutOrder($user);

    return $orderId;
}

Теперь:

  • каждая функция делает одну вещь
  • код легче тестировать
  • можно менять расчёт суммы без риска сломать email