Skip to content

Vlad5223/lab6

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

lab6

Найденные code smells (проблемы качества кода)

  • Функция process_checkout была слишком большой и выполняла сразу несколько обязанностей (парсинг, валидация, расчёты, формирование результата).
  • Повторяющиеся магические числа (0.21, 0.10, 200, 50 и т.д.).
  • Сложная вложенность условий при расчёте скидки.
  • Дублирование циклов по items (валидация и подсчёт subtotal).
  • Нарушение принципов DRY и KISS.

Применённые рефакторинги

  1. Вынесены все магические числа в именованные константы в начале файла.

  2. Логика разбита на маленькие функции с одной ответственностью:

    • parse_request — извлечение данных
    • validate_request — вся валидация
    • calculate_subtotal — подсчёт суммы
    • calculate_discount — расчёт скидки
    • generate_order_id — генерация ID заказа
  3. Основная функция process_checkout теперь короткая и читается сверху вниз как сценарий.

  4. Упрощена обработка отрицательной суммы после скидки с помощью max().

  5. Все изменения делались маленькими шагами с постоянной проверкой тестов.

После рефакторинга код стал значительно проще читать, понимать и расширять, при этом поведение полностью сохранено — все тесты продолжают проходить.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages