
Декомпозиция в коде
Декомпозиция — это разбиение сложной задачи или большого куска логики на более мелкие, понятные и независимые части.
Вместо одного огромного файла/функции на 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