Старая версия сайта Balka-Book

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

Рефакторинг. Улучшение существующего кода
Рефакторинг. Улучшение существующего кода - фото 1
820 грн
2579
ISBN
978-593286-045-8
2 человека
  • По ХарьковуДоставка курьером - 50 грн
    Бесплатно - от 1000 грн
  • По УкраинеБесплатно - от 1000 грн
    Новая Почта - от 30 грн
    Укрпочта - от 20 грн
  • Международная доставкаУкрпочта...
Подробнее о доставке

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

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

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


Полистать

 

Содержание
 
Предисловие
 
1. Рефакторинг, первый пример 
Исходная программа
Первый шаг рефакторинга
Декомпозиция и перераспределение метода statement
Замена условной логики на полиморфизм
Заключительные размышления
 
2. Принципы рефакторинга 
Определение рефакторинга
Зачем нужно проводить рефакторинг?
Когда следует проводить рефакторинг?
Как объяснить это своему руководителю?
Проблемы, возникающие при проведении рефакторинга
Рефакторинг и проектирование
Рефакторинг и производительность
Каковы истоки рефакторинга?
 
3. Код с душком 
Дублирование кода
Длинный метод
Большой класс
Длинный список параметров
Расходящиеся модификации
"Стрельба дробью"
Завистливые функции
Группы данных
Одержимость элементарными типами
Операторы типа switch
Параллельные иерархии наследования
Ленивый класс
Теоретическая общность
Временное поле
Цепочки сообщений
Посредник
Неуместная близость
Альтернативные классы с разными интерфейсами
Неполнота библиотечного класса
Классы данных
Отказ от наследства
Комментарии
 
4. Разработка тестов 
Ценность самотестирующегося кода
Среда тестирования JUnit
Добавление новых тестов
 
5. На пути к каталогу методов рефакторинга
Формат методов рефакторинга
Поиск ссылок
Насколько зрелыми являются предлагаемые методы 
рефакторинга?
 
6. Составление методов 
Выделение метода (Extract Method)
Встраивание метода (Inline Method)
Встраивание временной переменной (Inline Temp)
Замена временной переменной вызовом метода 
(Replace Temp with Query)
Введение поясняющей переменной (Introduce Explaining 
Variable)
Расщепление временной переменной (Split Temporary Variable)
Удаление присваиваний параметрам (Remove Assignments 
to Parameters)
Замена метода объектом методов (Replace Method with Method Object)
Замещение алгоритма (Substitute Algorithm)
 
7. Перемещение функций между объектами
Перемещение метода (Move Method)
Перемещение поля (Move Field)
Выделение класса (Extract Class)
Встраивание класса (Inline Class)
Сокрытие делегирования (Hide Delegate)
Удаление посредника (Remove Middle Man)
Введение внешнего метода (Introduce Foreign Method)
Введение локального расширения (Introduce Local Extension)
 
8. Организация данных
Самоинкапсуляция поля (Self Encapsulate Field)
Замена значения данных объектом (Replace Data Value 
with Object)
Замена значения ссылкой (Change Value to Reference)
Замена ссылки значением (Change Reference to Value)
Замена массива объектом (Replace Array with Object)
Дублирование видимых данных (Duplicate Observed Data)
Замена однонаправленной связи двунаправленной 
(Change Unidirectional Association to Bidirectional)
Замена двунаправленной связи однонаправленной 
(Change Bidirectional Association to Unidirectional)
Замена магического числа символической константой 
(Replace Magic Number with Symbolic Constant)
Инкапсуляция поля (Encapsulate Field)
Инкапсуляция коллекции (Encapsulate Collection)
Замена записи классом данных (Replace Record with Data Class)
Замена кода типа классом (Replace Type Code with Class)
Замена кода типа подклассами (Replace Type Code with Subclasses)
Замена кода типа состоянием/стратегией (Replace Type Code 
with State/Strategy)
Замена подкласса полями (Replace Subclass with Fields)
 
9. Упрощение условных выражений 
Декомпозиция условного оператора (Decompose Conditional)
Консолидация условного выражения (Consolidate Conditional 
Expression)
Консолидация дублирующихся условных фрагментов 
(Consolidate Duplicate Conditional Fragments)
Удаление управляющего флага (Remove Control Flag)
Замена вложенных условных операторов граничным 
оператором (Replace Nested Conditional with Guard Clauses)
Замена условного оператора полиморфизмом (Replace Conditional with Polymorphism)
Введение объекта Null (Introduce Null Object)
Введение утверждения (Introduce Assertion)
 
10. Упрощение вызовов методов 
Переименование метода (Rename Method)
Добавление параметра (Add Parameter)
Удаление параметра (Remove Parameter)
Разделение запроса и модификатора (Separate Query from Modifier)
Параметризация метода (Parameterize Method)
Замена параметра явными методами (Replace Parameter 
with Explicit Methods)
Сохранение всего объекта (Preserve Whole Object)
Замена параметра вызовом метода (Replace Parameter with Method)
Введение граничного объекта (Introduce Parameter Object)
Удаление метода установки значения (Remove Setting Method)
Сокрытие метода (Hide Method)
Замена конструктора фабричным методом (Replace Constructor 
with Factory Method)
Инкапсуляция нисходящего преобразования типа 
(Encapsulate Downcast)
Замена кода ошибки исключительной ситуацией (Replace 
Error Code with Exception)
Замена исключительной ситуации проверкой (Replace 
Exception with Test)
 
11. Решение задач обобщения 
Подъем поля (Pull Up Field)
Подъем метода (Pull Up Method)
Подъем тела конструктора (Pull Up Constructor Body)
Спуск метода (Push Down Method)
Спуск поля (Push Down Field)
Выделение подкласса (Extract Subclass)
Выделение родительского класса (Extract Superclass)
Выделение интерфейса (Extract Interface)
Свертывание иерархии (Collapse Hierarchy)
Формирование шаблона метода (Form Template Method)
Замена наследования делегированием (Replace Inheritance 
with Delegation)
Замена делегирования наследованием (Replace Delegation 
with Inheritance)
 
12. Крупные рефакторинги 
Разделение наследования (Tease Apart Inheritance)
Преобразование процедурного проекта в объекты 
(Convert Procedural Design to Objects)
Отделение предметной области от представления (Separate Domain from Presentation)
Выделение иерархии (Extract Hierarchy)
 
13. Рефакторинг, повторное использование и реальность
Проверка в реальных условиях
Почему разработчики не хотят применять рефакторинг 
к своим программам?
Возращаясь к проверке в реальных условиях
Ресурсы и ссылки, относящиеся к рефакторингу
Последствия повторного использования программного 
обеспечения и передачи технологий
Завершающее замечание
Библиография
 
14. Инструментальные средства проведения рефакторинга 
Рефакторинг с использованием инструментальных средств
Технические критерии для инструментов проведения рефакторинга
Практические критерии для инструментов рефакторинга
Краткое заключение
 
15. Складывая все вместе 
 
Библиография
Список примечаний
Алфавитный указатель

Вы можете купить книгу с доставкой курьером новой поштой укрпочтой Кривой Рог, Львов, Полтава, Житомир, Черкассы, Харьков, Чернигов, Винница, Тернополь, Киев, Луцк, Ровно, Хмельницкий, Херсон, Кировоград, Николаев, Днепропетровск, Ужгород, Запорожье, Суммы, Черновцы, Одесса, Ивано-франковск, другие города Украины. только в нашем магазине низкие цены, возможен торг, прямые поступления от издательства,книги под заказ, печать книг на заказ, компьютерные книги на английском языке.

Ви можете купити придбати книгу з доставкою кур'єром нова пошта Укрпошта Кривий Ріг, Львів, Полтава, Житомир, Харків, Чернігів, Вінниця, Тернопіль, Київ, Луцьк, Рівне, Хмельницький, Херсон, Кіровоград, Миколаїв, Дніпропетровськ, Ужгород , Запоріжжя, Суми, Чернівці, Черкаси, Одеса, Івано-франківськ, інші міста України. тільки в нашому магазині низькі ціни, можливий торг, прямі надходження від видавництва, книги під замовлення, друк книг на замовлення, комп'ютерні книги англійською мовою.