Ответ
Загроможденный метод — это метод, нарушающий принцип единственной ответственности (SRP), содержащий слишком много логики, что усложняет его понимание, тестирование и поддержку.
Признаки:
- Большое количество строк кода (обычно > 10-15).
- Несколько уровней абстракции в одном методе.
- Множество комментариев, разделяющих логические блоки.
Пример до рефакторинга (Java):
public void processOrder(Order order) {
// Валидация
if (order == null) throw new IllegalArgumentException();
if (order.getItems().isEmpty()) throw new IllegalStateException();
// Логика обработки товаров
for (Item item : order.getItems()) {
inventoryService.checkStock(item);
item.setProcessed(true);
}
// Расчет скидки
double discount = discountService.calculate(order);
order.setDiscount(discount);
// Сохранение
orderRepository.save(order);
// Отправка уведомления
notificationService.sendEmail(order.getCustomer());
}
Рефакторинг (Извлечение методов):
public void processOrder(Order order) {
validateOrder(order);
processItems(order);
applyDiscount(order);
saveOrder(order);
notifyCustomer(order);
}
private void validateOrder(Order order) { /* ... */ }
private void processItems(Order order) { /* ... */ }
private void applyDiscount(Order order) { /* ... */ }
private void saveOrder(Order order) { /* ... */ }
private void notifyCustomer(Order order) { /* ... */ }
Результат: Каждый метод имеет одну четкую цель, код становится читаемым, тестируемым и пригодным для повторного использования.