Описание
Рефакторинг. Улучшение существующего кода, Мартин Фаулер купить книга Україна
n
n
n
n
nОбкладинка – м”яка
n
nРік видання – 2018
n
nКількість сторінок – 432
n
nISBN – 978-593286-045-8
n
nБумага – біла, офсет
n
Про книгу Рефакторинг. Улучшение существующего кода, Мартин Фаулер
nК тому времени как объектная технология – в частности язык Java – стала обычным делом, появилось большое количество плохо спроектированных, неэффективных и малопригодных к сопровождению и расширению приложений. Профессиональные разработчики программных систем все яснее видят, насколько трудно иметь дело с таким “неоптимальным” наследием. Уже несколько лет эксперты в области объектного программирования применяют расширяющийся набор приемов, призванных улучшить структурную целостность и производительность таких программ. Этот подход, называемый рефакторингом, до сего момента оставался территорией экспертов, поскольку не предпринималось попыток перевести профессиональные знания в форму, доступную всем разработчикам.
n
nВ данной книге Мартин Фаулер показывает, как разработчики программного обеспечения могут реализовать существенные выгоды этой новой технологии, где обычно лежат возможности изменения структуры и как приступить к переделке плохого проекта в хороший. Каждый шаг рефакторинга прост – на первый взгляд слишком прост, чтобы сделать его. Это может быть перемещение поля из одного класса в другой, вынесение какого-то кода из метода и превращение его в самостоятельный метод или даже перемещение кода по иерархии классов. Каждый отдельный шаг может показаться элементарным, но совокупный эффект таких малых изменений в состоянии радикально улучшить проект. Рефакторинг является верным способом предотвращения распада программы.
n
nПомимо описания различных приемов автор предоставляет подробный каталог, включающий более семидесяти рефакторингов, а также полезные указания по их применению, пошаговые инструкции и практические примеры. Примеры написаны на Java, но идеи применимы к любому объектно-ориентированному языку программирования.
n
nПолистать
n
nСодержание
n
nПредисловие
n
n1. Рефакторинг, первый пример
n
nИсходная программа
n
nПервый шаг рефакторинга
n
nДекомпозиция и перераспределение метода statement
n
nЗамена условной логики на полиморфизм
n
nЗаключительные размышления
n
n2. Принципы рефакторинга
n
nОпределение рефакторинга
n
nЗачем нужно проводить рефакторинг?
n
nКогда следует проводить рефакторинг?
n
nКак объяснить это своему руководителю?
n
nПроблемы, возникающие при проведении рефакторинга
n
nРефакторинг и проектирование
n
nРефакторинг и производительность
n
nКаковы истоки рефакторинга?
n
n3. Код с душком
n
nДублирование кода
n
nДлинный метод
n
nБольшой класс
n
nДлинный список параметров
n
nРасходящиеся модификации
n
n”Стрельба дробью”
n
nЗавистливые функции
n
nГруппы данных
n
nОдержимость элементарными типами
n
nОператоры типа switch
n
nПараллельные иерархии наследования
n
nЛенивый класс
n
nТеоретическая общность
n
nВременное поле
n
nЦепочки сообщений
n
nПосредник
n
nНеуместная близость
n
nАльтернативные классы с разными интерфейсами
n
nНеполнота библиотечного класса
n
nКлассы данных
n
nОтказ от наследства
n
nКомментарии
n
n4. Разработка тестов
n
nЦенность самотестирующегося кода
n
nСреда тестирования JUnit
n
nДобавление новых тестов
n
n5. На пути к каталогу методов рефакторинга
n
nФормат методов рефакторинга
n
nПоиск ссылок
n
nНасколько зрелыми являются предлагаемые методы
n
nрефакторинга?
n
n6. Составление методов
n
nВыделение метода (Extract Method)
n
nВстраивание метода (Inline Method)
n
nВстраивание временной переменной (Inline Temp)
n
nЗамена временной переменной вызовом метода
n
n(Replace Temp with Query)
n
nВведение поясняющей переменной (Introduce Explaining
n
nVariable)
n
nРасщепление временной переменной (Split Temporary Variable)
n
nУдаление присваиваний параметрам (Remove Assignments
n
nto Parameters)
n
nЗамена метода объектом методов (Replace Method with Method Object)
n
nЗамещение алгоритма (Substitute Algorithm)
n
n7. Перемещение функций между объектами
n
nПеремещение метода (Move Method)
n
nПеремещение поля (Move Field)
n
nВыделение класса (Extract Class)
n
nВстраивание класса (Inline Class)
n
nСокрытие делегирования (Hide Delegate)
n
nУдаление посредника (Remove Middle Man)
n
nВведение внешнего метода (Introduce Foreign Method)
n
nВведение локального расширения (Introduce Local Extension)
n
n8. Организация данных
n
nСамоинкапсуляция поля (Self Encapsulate Field)
n
nЗамена значения данных объектом (Replace Data Value
n
nwith Object)
n
nЗамена значения ссылкой (Change Value to Reference)
n
nЗамена ссылки значением (Change Reference to Value)
n
nЗамена массива объектом (Replace Array with Object)
n
nДублирование видимых данных (Duplicate Observed Data)
n
nЗамена однонаправленной связи двунаправленной
n
n(Change Unidirectional Association to Bidirectional)
n
nЗамена двунаправленной связи однонаправленной
n
n(Change Bidirectional Association to Unidirectional)
n
nЗамена магического числа символической константой
n
n(Replace Magic Number with Symbolic Constant)
n
nИнкапсуляция поля (Encapsulate Field)
n
nИнкапсуляция коллекции (Encapsulate Collection)
n
nЗамена записи классом данных (Replace Record with Data Class)
n
nЗамена кода типа классом (Replace Type Code with Class)
n
nЗамена кода типа подклассами (Replace Type Code with Subclasses)
n
nЗамена кода типа состоянием/стратегией (Replace Type Code
n
nwith State/Strategy)
n
nЗамена подкласса полями (Replace Subclass with Fields)
n
n9. Упрощение условных выражений
n
nДекомпозиция условного оператора (Decompose Conditional)
n
nКонсолидация условного выражения (Consolidate Conditional
n
nExpression)
n
nКонсолидация дублирующихся условных фрагментов
n
n(Consolidate Duplicate Conditional Fragments)
n
nУдаление управляющего флага (Remove Control Flag)
n
nЗамена вложенных условных операторов граничным
n
nоператором (Replace Nested Conditional with Guard Clauses)
n
nЗамена условного оператора полиморфизмом (Replace Conditional with Polymorphism)
n
nВведение объекта Null (Introduce Null Object)
n
nВведение утверждения (Introduce Assertion)
n
n10. Упрощение вызовов методов
n
nПереименование метода (Rename Method)
n
nДобавление параметра (Add Parameter)
n
nУдаление параметра (Remove Parameter)
n
nРазделение запроса и модификатора (Separate Query from Modifier)
n
nПараметризация метода (Parameterize Method)
n
nЗамена параметра явными методами (Replace Parameter
n
nwith Explicit Methods)
n
nСохранение всего объекта (Preserve Whole Object)
n
nЗамена параметра вызовом метода (Replace Parameter with Method)
n
nВведение граничного объекта (Introduce Parameter Object)
n
nУдаление метода установки значения (Remove Setting Method)
n
nСокрытие метода (Hide Method)
n
nЗамена конструктора фабричным методом (Replace Constructor
n
nwith Factory Method)
n
nИнкапсуляция нисходящего преобразования типа
n
n(Encapsulate Downcast)
n
nЗамена кода ошибки исключительной ситуацией (Replace
n
nError Code with Exception)
n
nЗамена исключительной ситуации проверкой (Replace
n
nException with Test)
n
n11. Решение задач обобщения
n
nПодъем поля (Pull Up Field)
n
nПодъем метода (Pull Up Method)
n
nПодъем тела конструктора (Pull Up Constructor Body)
n
nСпуск метода (Push Down Method)
n
nСпуск поля (Push Down Field)
n
nВыделение подкласса (Extract Subclass)
n
nВыделение родительского класса (Extract Superclass)
n
nВыделение интерфейса (Extract Interface)
n
nСвертывание иерархии (Collapse Hierarchy)
n
nФормирование шаблона метода (Form Template Method)
n
nЗамена наследования делегированием (Replace Inheritance
n
nwith Delegation)
n
nЗамена делегирования наследованием (Replace Delegation
n
nwith Inheritance)
n
n12. Крупные рефакторинги
n
nРазделение наследования (Tease Apart Inheritance)
n
nПреобразование процедурного проекта в объекты
n
n(Convert Procedural Design to Objects)
n
nОтделение предметной области от представления (Separate Domain from Presentation)
n
nВыделение иерархии (Extract Hierarchy)
n
n13. Рефакторинг, повторное использование и реальность
n
nПроверка в реальных условиях
n
nПочему разработчики не хотят применять рефакторинг
n
nк своим программам?
n
nВозращаясь к проверке в реальных условиях
n
nРесурсы и ссылки, относящиеся к рефакторингу
n
nПоследствия повторного использования программного
n
nобеспечения и передачи технологий
n
nЗавершающее замечание
n
nБиблиография
n
n14. Инструментальные средства проведения рефакторинга
n
nРефакторинг с использованием инструментальных средств
n
nТехнические критерии для инструментов проведения рефакторинга
n
nПрактические критерии для инструментов рефакторинга
n
nКраткое заключение
n
n15. Складывая все вместе
n
nБиблиография
n
nСписок примечаний
n
nАлфавитный указатель
n
Анастасия (проверенный владелец) –
Заказывала книгу перед НГ. Очень быстрая доставка несмотря на праздники. Качество печати отличное. Все очень понравилось)
Дмитрий –
Это ведь первое издание, с примерами на джаве?
Александр Пупкин (проверенный владелец) –
Да, все верно. Это первое издание и примеры на джава