Система Orphus

Рефакторинг

Улучшение существующего кода

Авторы: Мартин Фаулер
Кент Бек
Джон Брант
Дон Робертс
Уильям Апдайк
Издательство: Символ-Плюс
432 страницы

Материал предоставил: Валерий Лаптев
Найти в магазинах
Купить в My-Shop.ru (540 руб.)

Аннотация

Содержание
Комментарии

Аннотация

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

В данной книге Мартин Фаулер показывает, как разработчики программного обеспечения могут реализовать существенные выгоды этой новой технологии, где обычно лежат возможности изменения структуры и как приступить к переделке плохого проекта в хороший. Каждый шаг рефакторинга прост - на первый взгляд слишком прост, чтобы сделать его. Это может быть перемещение поля из одного класса в другой, вынесение какого-то кода из метода и превращение его в самостоятельный метод или даже перемещение кода по иерархии классов. Каждый отдельный шаг может показаться элементарным, но совокупный эффект таких малых изменений в состоянии радикально улучшить проект. Рефакторинг является верным способом предотвращения распада программы.

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

Содержание

Предисловие

1. Рефакторинг, первый пример

2. Принципы рефакторинга

3. Код с душком

4. Разработка тестов

5. На пути к каталогу методов рефакторинга

6. Составление методов

7. Перемещение функций между объектами

8. Организация данных

9. Упрощение условных выражений

10. Упрощение вызовов методов

11. Решение задач обобщения

12. Крупные рефакторинги

13. Рефакторинг, повторное использование и реальность

14. Инструментальные средства проведения рефакторинга

15. Складывая все вместе

Библиография

Список примечаний

Алфавитный указатель

Комментарии

Валерий Лаптев

Опытные программисты знают, что разработка действительно большой программной системы со временем становится почти неуправляемой. Все благие намерения следовать графику, планомерно завершать этапы разработки, оказываются "дорогой в ад". Энтропия системы увеличивается - она сползает к хаосу. Как говорит Мартин Фаулер, "код медленно сползает от проектирования к хакерству". Заплаты ставятся на заплате, часто в спешке, лишь бы работало. То, что работает, по негласной заповеди программистов, неприкосновенно. Исправления делаются только при обнаружении ошибки. С этих позиций книга Мартина Фаулера и других гуру-программистов - прямо-таки потрясение основ! Изменять работающий код - так и хочется повертеть пальцем у виска! Но "торописса - не надо!"

Эта книга стоит в одном ряду с такими эпохальными трудами, как "Искусство программирования" Кнута, "Дисциплина программирования" Дейкстры, "Паттерны проектирования" Банды четырех и других. Однако она здорово отличается от всех других. Все книги учат, как надо правильно писать программы с самого начала. Эта же книга гораздо ближе к реальной жизни: в ней даются практические рецепты, как исправлять уже написанный код. Улучшенный код - более простой, надежный и быстродействующий. Как говорит сам Фаулер, "каждый шаг этого процесса прост до чрезвычайности. ... Однако суммарный эффект таких небольших изменений может радикально улучшить проект. Это прямо противоположно обычному явлению постепенного распада программы". И термин придуман звучный: РЕФАКТОРИНГ!

Для кого написана эта книга, пишет сам автор: "Книга рассчитана на профессионального программиста - того, кто зарабатывает себе на жизнь программированием". Пожалуй, наиболее ценной частью книги является список рефакторингов - приемов преобразования кода. Однако сам список ничего не даст, если не знать, в каких случаях его применять. Это во многих случаях основано на опыте и интуиции. Авторы попытались описать интуитивный процесс, выделив признаки плохого кода. Термин для этого придуман совершенно блестящий - "код с душком"! Очень интересной является глава 4 - о самопроверяющихся тестах. Описываются принципы организации среды тестирования Junit.

Книга написана просто и понятно, читается почти как детектив - на одном дыхании. Много реальных историй из жизни авторов. Код постоянно сопровождается соответствующими диаграммами UML. Несмотря на то, что код написан на Java, предмет книги ни в коей мере с кодом не связан - те же приемы с успехом можно применять и при программировании на других языках. По каким-то неизвестным нам причинам ряд книжек об антипаттернах ("Горький вкус Java" Брюса Тейта, "Типичные ошибки проектирования" Эрика Аллена) написаны для Java. Это отнюдь не снижает их ценности для других программистов.

Эту книжку должен держать под рукой каждый профессиональный программист.