Купите комплект

Название в оригинале Refactoring. Improving the Design of Existing Code
Серия Основы
Издательство Символ
Год издания 2013
Страниц 432
Переплет Мягкая обложка
Формат 70х100/16 (170х240 мм, увеличенный)
ISBN 978-5-93286-045-8
Вес 700 г
Изготовитель ООО "Издательство "Символ-плюс". 193144, РФ, г. Санкт-Петербург, ул. 5-я Советская, 44/59
Импортер ООО «НТЦ АПИ», г. Минск, ул. Уманская, 54, пом. 1, каб. 34

Содержание

  • Предисловие
  • 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. Складывая все вместе
  • Библиография
  • Список примечаний
  • Алфавитный указатель

16 отзывов

Наверх

Вход

В течение нескольких секунд вам придёт SMS с одноразовым кодом для входа. Если ничего не пришло — отправьте код ещё раз.
Получите доступ к персональным скидкам и акциям, ускорьте оформление заказов.
Войдите с помощью своего профиля

Регистрация

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

Восстановление пароля

Укажите адрес электронной почты, который вы использовали при регистрации
Нужна помощь? Звоните 695-25-25 (МТС, velcom, life:) или напишите нам

Восстановление пароля

Инструкции по восстановлению пароля высланы на 
Нужна помощь? Звоните 695-25-25 (МТС, velcom, life:) или напишите нам
Приходите в будние дни с 10 до 20, в субботу с 10 до 17. Воскресенье — выходной
695-25-25 МТС, velcom, life:)

Магазин OZ

Магазины OZ

Минск
Ещё  0 городов
В будние дни с 10 до 20
В субботу с 10 до 17
Воскресенье — выходной
695-25-25 МТС, velcom, life:)