Назад к вопросам
DNS
Senior
9
Code Review: найди проблемы в коде класса Order с расчётом стоимости доставки
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Без конкретного кода сложно дать точный разбор, но типичные проблемы в классе Order с расчётом стоимости доставки могут быть:
- Жёстко закодированные значения: тарифы доставки, пороги бесплатной доставки и т.п. должны быть вынесены в конфигурацию.
- Отсутствие учёта разных условий: вес, габариты, регион доставки, тип доставки могут влиять на стоимость.
- Нарушение принципов SOLID: например, класс Order может иметь слишком много ответственности, включая логику доставки.
- Отсутствие обработки ошибок: например, неправильные данные или недоступность тарифов.
- Плохая читаемость и поддерживаемость: длинные методы, дублирование кода.
Пример улучшения — выделить отдельный сервис для расчёта доставки:
public class DeliveryCalculator {
public BigDecimal calculate(Order order) {
// Логика расчёта с учётом веса, региона и типа доставки
}
}
public class Order {
private DeliveryCalculator deliveryCalculator;
private BigDecimal deliveryCost;
public BigDecimal getDeliveryCost() {
if (deliveryCost == null) {
deliveryCost = deliveryCalculator.calculate(this);
}
return deliveryCost;
}
}
Такой подход улучшает тестируемость и расширяемость кода.