Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

Lab6TP

Лабораторная работа №6: Рефакторинг и устранение Code Smells

Описание проекта

Рефакторинг модуля обработки заказов order_processing.py. Исходный код содержал функцию для расчета стоимости заказа с учетом скидок и налогов, но имел несколько проблем качества (code smells).

Обнаруженные проблемы качества кода

1. Длинная функция (Long Method)

Функция process_checkout() занимала 52 строки и выполняла слишком много задач:

  • Валидация входных данных
  • Расчет суммы заказа
  • Применение скидок
  • Расчет налогов
  • Формирование ответа

2. Магические числа (Magic Numbers)

В коде были разбросаны числовые и строковые константы:

  • Проценты скидок: 0.10, 0.20, 0.05
  • Процент налога: 0.21
  • Пороговые значения: 200, 100, 50, 10
  • Строковые константы: "USD", "SAVE10", "SAVE20", "VIP"

3. Сложные условные конструкции

Большой блок if-elif-elif для обработки купонов (9 строк) с вложенными условиями, что затрудняло понимание логики.

4. Повторение кода (Duplication)

Множественные проверки if value <= 0 для цены и количества, а также похожие структуры вызова raise ValueError.

5. Смешение уровней абстракции

Функция занималась одновременно низкоуровневой валидацией данных, бизнес-логикой расчета и форматированием результата.

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

1. Вынесение констант

# Было:
discount = int(subtotal * 0.10)
currency = "USD"

# Стало:
DISCOUNT_SAVE10 = 0.10
DEFAULT_CURRENCY = "USD"
discount = int(subtotal * DISCOUNT_SAVE10)
currency = DEFAULT_CURRENCY

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages