Корзина
0
Корзина
0
Добавьте в корзину товаров ещё на 900 гривен, чтобы БЕСПЛАТНО получить товар по Украине до отделения Новой почты.

Ваша корзина пустая

Меню
Купить Рефакторинг: улучшение существующего кода

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

Рефакторинг - улучшение структурной целостности и производительности существующих программ. Труд "Рефакторинг: улучшение существующего кода" - это must have любого уважающего себя профессионального программиста; творение, формирующее сознание разработчика; универсальная классическая книга, достойная быть настольной! Это первый подобный труд, проливший свет не на поверхность, но на саму суть: на технологии и подходы к процессу.

Каждый шаг рефакторинга прост. Это может быть перемещение поля из одного класса в другой, вынесение фрагмента кода из метода и превращение его в самостоятельный метод или даже перемещение кода по иерархии классов. Каждый отдельный шаг может показаться элементарным, но совокупный эффект таких малых изменений в состоянии радикально улучшить проект или даже предотвратить распад плохо спроектированной программы. 
 
Мартин Фаулер с соавторами во всех тонкостях описали принципы и лучшие приемы осуществления рефакторинга, указав, где и когда следует начинать углубленное изучение кода с целью его улучшения. Основу книги "Рефакторинг: улучшение существующего кода" составляет подробный перечень более 70 методов рефакторинга, для каждого из которых описываются мотивация и техника испытанного на практике преобразования кода с примерами на 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. Складывая все вместе 
 
Библиография
Список примечаний
Алфавитный указатель
Нет в наличии

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

Купить Рефакторинг: улучшение существующего кода
Артикул : 33802
Издательство : Символ
Автор : Мартин Фаулер, Кент Бек, Джон Брант, Уильям Апдайк
Язык : Русский
ISBN13 : 978-593286-045-8
Формат : 70x100/16
EAN13 : 9785932860458
Страниц : 432
Год издания : 2018
Тип переплета : Мягкий
Нет в наличии

Описание

Рефакторинг - улучшение структурной целостности и производительности существующих программ. Труд "Рефакторинг: улучшение существующего кода" - это must have любого уважающего себя профессионального программиста; творение, формирующее сознание разработчика; универсальная классическая книга, достойная быть настольной! Это первый подобный труд, проливший свет не на поверхность, но на саму суть: на технологии и подходы к процессу.

Каждый шаг рефакторинга прост. Это может быть перемещение поля из одного класса в другой, вынесение фрагмента кода из метода и превращение его в самостоятельный метод или даже перемещение кода по иерархии классов. Каждый отдельный шаг может показаться элементарным, но совокупный эффект таких малых изменений в состоянии радикально улучшить проект или даже предотвратить распад плохо спроектированной программы. 
 
Мартин Фаулер с соавторами во всех тонкостях описали принципы и лучшие приемы осуществления рефакторинга, указав, где и когда следует начинать углубленное изучение кода с целью его улучшения. Основу книги "Рефакторинг: улучшение существующего кода" составляет подробный перечень более 70 методов рефакторинга, для каждого из которых описываются мотивация и техника испытанного на практике преобразования кода с примерами на 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. Складывая все вместе 
 
Библиография
Список примечаний
Алфавитный указатель

Рекомендуемые книги

Купить Історія України написана у Vст.до нашої ери Геродотом

Історія України написана у Vст.до нашої ери Геродотом

75 грн
Купить Міні листівка Я дуже сильно тебе кохаю

Міні листівка Я дуже сильно тебе кохаю

10 грн
Купить Свинка Пеппа.Я іду шукати! (Знайди і покажи)

Свинка Пеппа.Я іду шукати! (Знайди і покажи)

64 грн
Купить Сильмариліон

Сильмариліон

Джон Рональд Руел Толкін

250 грн
Купить Компьютерное зрение. Современный подход

Компьютерное зрение. Современный подход

Форсайт

1 080 грн
Купить Египет. Загадки фараонов

Египет. Загадки фараонов

Паскаль Прево

472 грн
Купить Учение о душе

Учение о душе

Фома Аквинский

62 грн
Купить Еженедельник полудатированный Axent Strong,темно-синий

Еженедельник полудатированный Axent Strong,темно-синий

150 грн
Купить Эмоциональный интеллект в продажах

Эмоциональный интеллект в продажах

Галина Шабшай, Ефим Шабшай

280 грн
Купить To Kill a Mockingbird = Убить пересмешника. Адаптированная книга для чтения на английском языке. Pre-Intermediate

To Kill a Mockingbird = Убить пересмешника. Адаптированная книга для чтения на английском языке. Pre-Intermediate

Harper Lee

86 грн
Купить Країна Мумі-тролів. Книга 2

Країна Мумі-тролів. Книга 2

Туве Янссон

130 грн
Купить Модальні дієслова англійської мови

Модальні дієслова англійської мови

Вікторія Наумчак

18 грн
Купить Любомир Гузар Хочу бути Людиною

Любомир Гузар Хочу бути Людиною

Катерина Щоткіна

125 грн
Купить Гуси-лебеді. Панорамка

Гуси-лебеді. Панорамка

68 грн
Купить Intermezzo: Вибрані твори

Intermezzo: Вибрані твори

Михайло Коцюбинський

145 грн
Купить Космос

Космос

Наталия Бершова

110 грн
Купить Фантастические твари и где они обитают. Оригинальный сценарий

Фантастические твари и где они обитают. Оригинальный сценарий

Джоан Роулинг

230 грн
Купить Золотая книга сказок

Золотая книга сказок

Божена Немцова

270 грн
Купить Коробка-сумочка, красная, малая 18х14х5,5 см (подарочная)

Коробка-сумочка, красная, малая 18х14х5,5 см (подарочная)

40 грн
Купить Java: руководство для начинающих

Java: руководство для начинающих

Герберт Шилдт

680 грн
Купить Цветы. Естественная история

Цветы. Естественная история

Бруно П. Кремер

450 грн
Купить Найкраща книга для читання від 3 до 6 років

Найкраща книга для читання від 3 до 6 років

170 грн
Купить Энциклопедия Амосова. Алгоритм здоровья

Энциклопедия Амосова. Алгоритм здоровья

Николай Амосов

680 грн
Купить Волшебный фонарь

Волшебный фонарь

Марина Цветаева

305 грн
Купить Велика книга почуттів

Велика книга почуттів

Гжегож Касдепке

270 грн
Купить Блокнот Partner Soft Mini, клетка, гибкая обложка, розовая

Блокнот Partner Soft Mini, клетка, гибкая обложка, розовая

70 грн
Купить Панорамка. Дюймовочка (укр)

Панорамка. Дюймовочка (укр)

Ганс Крістіан Андерсен

78 грн
Купить Кава з медом

Кава з медом

Олександр Черних

82 грн
Купить Рабы ума и победители смерти

Рабы ума и победители смерти

Монах Симеон Афонский

84 грн
Купить Желтый туман

Желтый туман

Александр Волков

170 грн
Купить Основы рэйки: Полное руководство по древнему искусству исцеления

Основы рэйки: Полное руководство по древнему искусству исцеления

Дайяна Стайн

135 грн
Купить Найкращі народні казки: книга 1: Колобок. Колосок. Лисиця і журавель. Їжак та заєць. Цап та баран. Солом’яний бичок. Казка про Івасика-Телесика

Найкращі народні казки: книга 1: Колобок. Колосок. Лисиця і журавель. Їжак та заєць. Цап та баран. Солом’яний бичок. Казка про Івасика-Телесика

130 грн
Купить Колыбельная для маленького пирата (иллюстр. А. Ломаева)

Колыбельная для маленького пирата (иллюстр. А. Ломаева)

Антон Ломаев

200 грн
Купить Гарри Поттер и Тайная комната (с цветными иллюстрациями)

Гарри Поттер и Тайная комната (с цветными иллюстрациями)

Джоан Роулинг

624 грн
Купить Джерело

Джерело

Айн Рэнд

255 грн
Купить Проблема сознания в междисциплинарной перспективе

Проблема сознания в междисциплинарной перспективе

240 грн
Купить Скретч карта Європи Discovery Map (англ)

Скретч карта Європи Discovery Map (англ)

350 грн
Купить Подарочный пакет котики на белом  (32*25*11.5 см)

Подарочный пакет котики на белом (32*25*11.5 см)

30 грн
Купить Глобальный эволюционизм. Идеи, проблемы, гипотезы

Глобальный эволюционизм. Идеи, проблемы, гипотезы

И.В.Ильин,А.Д.Урсул,Т.А.Урсул

300 грн
Купить Создание сайтов своими руками на BOOTSTRAP

Создание сайтов своими руками на BOOTSTRAP

Евдокимов П. В., Финков М. В.

285 грн

Книги из категории "Книги по программированию"

Купить Реактивное программирование на С++

Реактивное программирование на С++

Пай П., Абрахам П.

1 000 грн
Купить Твой путь в киберспорт

Твой путь в киберспорт

Майк Дайвер

145 грн
131 грн
Купить Романтика искусственного интеллекта

Романтика искусственного интеллекта

Потопахин В.В.

393 грн
197 грн
Купить Изучаем Java EE. Современное программирование для больших предприятий

Изучаем Java EE. Современное программирование для больших предприятий

Себастьян Дашнер

Нет в наличии
Купить JavaScript для чайников

JavaScript для чайников

Крис Минник, Ева Холланд

330 грн
Купить Кровь, пот и пиксели. Обратная сторона индустрии видеоигр

Кровь, пот и пиксели. Обратная сторона индустрии видеоигр

Джейсон Шрейер

305 грн
Купить Совершенный алгоритм. Основы

Совершенный алгоритм. Основы

Тим Рафгарден

550 грн
Купить Предиктивное моделирование на практике

Предиктивное моделирование на практике

Макс Кун, Джонсон Кьелл

Нет в наличии
Купить Java. Полное руководство

Java. Полное руководство

Герберт Шилдт

1 080 грн
Купить Создание веб-сайтов с помощью Joomla! 1.5

Создание веб-сайтов с помощью Joomla! 1.5

Хаген Граф

135 грн
Купить Visual Basic.NET Text Manipulation Handbook

Visual Basic.NET Text Manipulation Handbook

Francois Liger, Craig McQ

165 грн
83 грн
Купить Глубокое обучение: готовые решения

Глубокое обучение: готовые решения

Давид Осинга

330 грн
Купить Изучаем регулярные выражения

Изучаем регулярные выражения

Бен Форта

175 грн
Купить Наиболее эффективное программирование на C#: 50 способов улучшения кода

Наиболее эффективное программирование на C#: 50 способов улучшения кода

Билл Вагнер

495 грн
Купить Building Distributed Applications with Visual Basic.Net

Building Distributed Applications with Visual Basic.Net

Fox Dan

223 грн
112 грн
Купить Повелители DOOM. Как два парня создали культовый шутер и раскачали индустрию видеоигр

Повелители DOOM. Как два парня создали культовый шутер и раскачали индустрию видеоигр

Дэвид Кушнер

360 грн
Купить Java: эффективное программирование

Java: эффективное программирование

Джошуа Блох

680 грн
Купить Язык программирования C# 7 и платформы .NET и  .NET Core

Язык программирования C# 7 и платформы .NET и .NET Core

Эндрю Троелсен, Филипп Джепикс

1 260 грн
Купить Концептуальная модель комплекса средств лингвистического и программного обеспечения экспертно-поиско

Концептуальная модель комплекса средств лингвистического и программного обеспечения экспертно-поиско

Пономарев В.В.

71 грн
36 грн
Купить Microsoft IIS 5 Administration

Microsoft IIS 5 Administration

O'brien G.

198 грн
99 грн

Цитаты пользователей

Всего цитат
0

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Отзывы

Отзывы
0 рецензий

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.
Все права защищены © 2003-2020 Bookzone.com.ua              Условия использования | Политика конфиденциальности
Интеграция сайта с 1С: ©SUPC