3 декабря 2011 г.

Фаулер, исходники примера из первой главы

На днях начал плотное изучение книги Мартина Фаулера "Рефакторинг: улучшение существующего кода"

В самой первой главе этой замечательной книги приводится интересный пример, с помощью которого, автор и показывает нам как правильно проводить рефакторинг.

Банально, но для закрепления теории нет ничего лучше практики. Вот так и родилась идея завести маленький проект в IntelliJ IDEA и попробовать там проделать то же самое. Ну и грех не поделится, может кому-нибудь будет полезен этот код.

Проект на GoogleCode

VCS: Mercurial

Repository URL: https://code.google.com/p/fowler-book-chapter1/

Небольшие изменения, которые привнес я (отличия от книги):

  1. Самое главное - написал тесты, которые в книге упоминаются, но не приводятся (сделал на JUnit4).
  2. В последних коммитах (а их всего девять) я заменил авторскую конкатенацию строк для формировании отчёта на более удобный метод String.format()
  3. Немного другая разметка HTML-версии отчёта (авторская показалась какой-то убогой)

Загрузить проект в отличную от IntelliJ IDEA среду, я думаю, сможете без проблем. Тесты лежат в отдельном пакете "Tests".

На текущий момент последняя ревизия — с подписью "Шаг 7 (заключительный в книге). Замена switch полиморфизмом. Создание класса Price с потомками."

Правда и более ранние коммиты тоже имеют значения - благодаря им можно отследить всю историю правок, шаг за шагом.

P.S. Хочу в дальнейшем преобразовать этот код в подобие боевого - чтобы было все правильно прокомментировано, были всевозможные проверки на входные значения аргументов методов и т.п.