Найденные проблемы качества:
- Функция
process_checkoutбыла слишком длинной и совмещала разбор запроса, валидацию и все вычисления. - В коде использовались магические числа и строки (ставки налогов, размеры скидок, пороги сумм, коды купонов).
- Логику было сложно читать сверху вниз как последовательный сценарий.
Применённые рефакторинги:
- Вынесены отдельные функции: разбор запроса, базовая валидация, валидация списка товаров, подсчёт
subtotal, расчёт скидки, расчёт налога, формированиеorder_id. - Магические числа и строки заменены на именованные константы.
- Основная функция
process_checkoutстала короче и теперь описывает шаги обработки заказа.
Что стало проще читать и менять:
- Код читается как сценарий: сначала валидация, затем расчёты и формирование результата.
- Логику скидок и налогов можно менять в одном месте, не трогая остальной код.
- Проще добавлять новые купоны или изменять формулы расчёта без риска сломать другие части.