Sobes.tech
Назад к вопросам
Senior
9

Code Review: найди проблемы в коде класса Order с расчётом стоимости доставки

Компании, где спрашивали
DNSDNS

Ответ от нейросети

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;
    }
}

Такой подход улучшает тестируемость и расширяемость кода.