Главная

Рефакторинг. Улучшение проекта существующего кода

Рефакторинг. Улучшение проекта существующего кода
«Если что-то стало пованивать, его лучше сменить.»

Книжка полезная. Во-первых, все примеры написаны на Java и разобраны весьма подробно. Это позволяет манипулировать кодом и на других языках, таких как С++, С#, PHP и т.п.

Во-вторых, каждое действие с кодом обосновано "мотивировкой", хотя и остаются порой весьма субъективные положения мотивации. Например, из субъективного ощущения объема метода можно вынести решение на разбитие этого метода, а можно и не вынести, если вам кажется, что этот метод не такой уж и объемный.

В-третьих, в вашем арсенале появляется список понятий, которыми вы можете легко оперировать при обсуждении с таким же как вы, прочитавшим эту книгу и въехавшим в этот материал. На самом деле реакция знающего специалиста будет молниеносна на ваши слова о "самоинкапсуляции поля" или о "замене условной инструкции полиморфизмом". Таким образом, механизм, которым Вы должны овладеть по окончании проработки материала книги, должен повысить ваш профессионализм и заставить взглянуть на ваш код с другой стороны. Если вы стремитесь развивать свой профессионализм, то думаю, вам стоит прочесть эту книгу, прежде чем писать код нового проекта. 

Список рефакторинговПочти 2/3 объема занимает каталог методов рефакторинга, каждый из них имеет четкую структуру описания: диаграмма, мотивировка (какие признаки кода говорят о необходимости применения данного метода), техника (пошаговое выполнение операций безопасным способом с контролем идентичности результата), пример на Java. Всего представлены более 70 методов [фото], а в первой части книги подробно разобран рефакторинг примера кода, обсуждаются организационные аспекты выполнения в рефакторинга в команде разработчиков и подробно анализируются признаки кода, нуждающегося в рефакторинге ("код с душком"). Некоторые подходы автора кажутся весьма спорными. Автор считает идеальным, когда код фактически состоит из вызовов методов более низкого уровня, вплоть до выделения каждой строки кода в отдельный метод. Т.е. код, состоящий из 10000 методов по одной строке кажется автору более ясным, чем код из 200 методов по 50 строк каждый. Однако для любой нетривиальной задачи это потребовало бы либо передачи большого числа параметров, либо выделения всех данных в единственный класс-гигант. Есть спорные способы, но применять их или нет, Ваше усмотрение.

«С помощью рефакторингов ... переносите одну за другой функциональности исходного класса, пока в нем ничего не останется. Отслужите короткую и скромную панихиду по исходному классу.»

Главная ценность книги - она доносит очень важную мысль: Рефакторинг это необходимо и нужно. Книга полезная, заслуживает того, чтобы прочитать и пользоваться. На самом деле книга довольно сильно устарела, вернее, рассчитана на время, когда рефакторинг был в новинку. Сейчас ничего из этого не является откровением. Хотя, многие мысли не потеряли актуальности до сих пор. Перед прочтением рекомендую, прочитать книгу "Шаблоны проектирования", либо освежить в памяти шаблоны проектирования.

Роберт Фатхуллин

Статья Роберт Фатхуллин

Backend Developer