Lab6_Refactoring Проблемы Нарушение принципа единственной ответственности (функция process_checkout) Нарушение принципа открытости/закрытости (для добавления новой скидки надо изменять существующий метод) Высокая цикломатическая сложность (множественное ветвление особенно в расчёте скидки) Магические числа и строки (200, "SAVE10" и т.д.) Рефакторинг Выделение функций (каждая ответственность в отдельной функции) Инкапсуляция логики скидок (каждая скидка в своей функции ) Разделение валидации (отдельные функции для разных проверок ) Вынесение констант (все числа и строки были выделены в именованные константы) Упрощения Понятная последовательность действий (разбор - валидация - расчёты - результат) Валидация (изменение правил только в функциях части валидации) Отсутствие вложенных условий Добавления новой скидки (метод + константа)