lab6_tp_2025
Лаба 6 - Рефакторинг и code smells
Цель работы - научиться: находить smells в реальном коде, применять рефакторинг, чтобы код лучше читался, сохранять поведение при изменении структуры.
Проблемы, обнаруженные в order_processing.py:
-
Функция process_checkout слишком длинная и выполняет слишком много задач: Валидация, расчет скидок, налогов, генерация order_id и формирование ответа
-
Дублирование кода
-
Вложенный условный оператор в блоке для расчета скидок тяжело читается
-
Повторяющиеся магические числа (константы без однозначной идентификации): 0.21, 0.10, 200, 50 ...
-
Смешение уровней абстракции (низкоуровневые операции с выосокоуровневыми)
Рефакторинг:
- Разделение длинной функции на специализированные Исходная функция была разделена на несколько логических блоков, что улучшило читаемость:
parse_request() — для извлечения данных из запроса.
validate_request() — для валидации входных данных и элементов заказа.
calculate_subtotal() — для расчета промежуточной суммы заказа.
calculate_discount() — для вынесения логики расчета скидок.
calculate_tax() — для расчета налога.
generate_order_id() — для генерации уникального ID заказа.
-
Вынесение констант Вынесены все магические числа в именованные константы.
-
Улучшение условной логики Условные выражения, отвечающие за применение скидок, были упрощены и сделаны более наглядными.
-
Упорядочивание кода После рефакторинга код организован как четкий сценарий: функции вызываются в логическом порядке.