Мартин Фаулер. Рефакторинг. 2-е издание.
В примере рассматривается задача из главы 1 (доступна свободно) и применяются аналогичные разобранным в книге Фаулера преобразования кода.
В задаче требуется печатать счета, которые театральная компания выставляет своим клиентам. Клиент заказывает театральной компании представление (исполнение некоторой пьесы) и оплачивает заказ в зависимости от количества слушателей и типа (жанра) пьесы. Клиент также получает кредит, который можно использовать при оплате следующих заказов. Объём кредита также вычисляется в зависимости от количества слушателей и типа пьесы.
Упростить реализацию в дальнейшем новых возможностей:
- форматирование счёта в HTML;
- добавление новых типов пьес.
- Исправление предупреждений IDE.
- Замена строк для типов пьес на Enum-класс:
- добавление типа;
- изменение данных;
- изменение тестов.
- Декомпозиция функции
statement
:- выделение функций;
- переименование переменных.
- Отделение вычислений от форматирования:
- разбиение циклов;
- замена циклов на функции;
- замена изменяемых переменных на неизменяемые;
- введение промежуточных форм данных.
- Реорганизация вычислений по типам представлений:
- выделение функций;
- замена условных конструкций на табличный метод.
- Разбиение на файлы.