Авторизация
Поиск по указателям
Фаулер М., Бек К., Брант Д., Апдайк У., Робертс Д. — Рефакторинг. Улучшение существующего кода
Обсудите книгу на научном форуме
Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter
Название: Рефакторинг. Улучшение существующего кода
Авторы: Фаулер М., Бек К., Брант Д., Апдайк У., Робертс Д.
Аннотация: Подход к улучшению структурной целостности и производительности существующих программ, называемый рефакторингом, получил развитие благодаря усилиям экспертов в области ООП, написавших эту книгу. Каждый шаг рефакторинга прост. Это может быть перемещение поля из одного класса в другой, вынесение фрагмента кода из метода и превращение его в самостоятельный метод или даже перемещение кода по иерархии классов. Каждый отдельный шаг может показаться элементарным, но совокупный эффект таких малых изменений в состоянии радикально улучшить проект или даже предотвратить распад плохо спроектированной программы.
Мартин Фаулер с соавторами пролили свет на процесс рефакторинга, описав принципы и лучшие приемы его осуществления, а также указав, где и когда следует начинать углубленное изучение кода с целью его улучшения. Основу книги составляет подробный перечень более 70 методов рефакторинга, для каждого из которых описываются мотивация и техника испытанного на практике преобразования кода с примерами на Java. Рассмотренные в книге методы позволяют поэтапно модифицировать код, внося каждый раз небольшие изменения, благодаря чему снижается риск, связанный с развитием проекта. .
Язык:
Статус предметного указателя: Готов указатель с номерами страниц
ed2k: ed2k stats
Год издания: 2003
Количество страниц: 432
Добавлена в каталог: 18.05.2005
Операции: Положить на полку |
Скопировать ссылку для форума | Скопировать ID
Предметный указатель
Код ошибки, замена исключительной ситуацией, пример 313
Код ошибки, замена исключительной ситуацией, пример, непроверяемые, техника 313
Код с душком 99
Код самотестирующийся 101—104
Код типа, замена классом 223—228
Код типа, замена классом, мотивировка 224
Код типа, замена классом, пример 228
Код типа, замена классом, техника 224
Код типа, замена подклассами 228—231
Код типа, замена подклассами, мотивировка 229
Код типа, замена подклассами, пример 231
Код типа, замена подклассами, техника 229
Код типа, замена состоянием/стратегией 231—236
Код типа, замена состоянием/стратегией, мотивировка 232
Код типа, замена состоянием/стратегией, пример 236
Код типа, замена состоянием/стратегией, техника 232
Код цены, замена условной логики 60
Код цены, изменение методов доступа movie 54
Код, дублирование 86—87
Код, переименование 32
Код, рефакторинг и приведение кода в порядок 62
Код, рефакторинг уменьшает объем кода 46
Комментарии 99
Константа, замена магического числа символической 211—212
Константа, замена магического числа символической, мотивировка 212
Константа, замена магического числа символической, техника 212
Конструктор, замена фабричным методом 306—309
Конструктор, замена фабричным методом, мотивировка 306
Конструктор, замена фабричным методом, пример 307
Конструктор, замена фабричным методом, пример, создание подклассов с помощью строки 309
Конструктор, замена фабричным методом, пример, создание подклассов явными методами 309
Конструктор, замена фабричным методом, техника 306
Конструктор, подъем тела 326—328
Конструктор, подъем тела, мотивировка 326
Конструктор, подъем тела, пример 328
Конструктор, подъем тела, техника 326
Косвенность и рефакторинг 70—71
Ленивый класс 94
Локальное расширение, введение 174—178
Локальное расширение, введение, использование оболочек 178
Локальное расширение, введение, использование подклассов 177
Локальное расширение, введение, примеры 178
Локальное расширение, введение, техника 175
Локальные переменные 30
Локальные переменные, использование 127
Локальные переменные, отсутствие 126
Локальные переменные, присваивание нового значения 128
Магические числа, замена символической константой 211—212
Магические числа, замена символической константой, мотивировка 212
Магические числа, замена символической константой, техника 212
Массивы, замена объектом 194—196
Массивы, замена объектом, мотивировка 194
Массивы, замена объектом, пример 196
Массивы, замена объектом, техника 195
Массивы, инкапсуляция 221—222
Методы и объекты 33
Методы рефакторинга, каталог 122
Методы рефакторинга, каталог, зрелость предлагаемых методов рефакторинга 122
Методы рефакторинга, каталог, поиск ссылок 120
Методы, вместо параметра 294—297
Методы, встраивание 131—132
Методы, выделение 124—130
Методы, выделение при отсутствии локальных переменных 126
Методы, выделение с использованием локальных переменных 127
Методы, выделение, мотивировка 124
Методы, выделение, присваивание нового значения локальной переменной 128
Методы, выделение, техника 125
Методы, длинный 88
Методы, замена конструктора фабричным 306—309
Методы, замена конструктора фабричным, мотивировка 306
Методы, замена конструктора фабричным, пример, создание подклассов с помощью строки 309
Методы, замена конструктора фабричным, пример, создание подклассов явными методами 309
Методы, замена конструктора фабричным, техника 306
Методы, замена параметра явными 291
Методы, нахождение всех ссылок на старый 34
Методы, параметризация 286
Методы, параметризация, мотивировка 286
Методы, параметризация, пример 287
Методы, параметризация, техника 286
Методы, переименование 277
Методы, переименование, мотивировка 277
Методы, переименование, пример 278
Методы, переименование, техника 278
Методы, перемещение 154—158
Методы, перемещение, мотивировка 154
Методы, перемещение, пример 158
Методы, перемещение, техника 156
Методы, подъем 323—325
Методы, подъем, мотивировка 324
Методы, подъем, пример 325
Методы, подъем, техника 324
Методы, создание замещающего 57
Методы, создание подклассов явными 309
Методы, сокрытие, мотивировка 305
Методы, сокрытие, техника 305
Методы, составление 123—151
Методы, спуск 328—329
Методы, спуск, мотивировка 328
Методы, спуск, техника 329
Методы, установки значения, удаление 302—304
Методы, установки значения, удаление, мотивировка 302
Методы, установки значения, удаление, пример 304
Методы, формирование шаблона 344—351
Методы, формирование шаблона, мотивировка 345
Методы, формирование шаблона, пример 351
Методы, формирование шаблона, техника 345
Модель 368
Модификатор, отделение от запроса 282—285
Модификации, расходящиеся» 90
Модулей и функциональные тесты 110
Наследование 52
Наследование вместо делегирования 354— 356
Наследование вместо делегирования, мотивировка 355
Наследование вместо делегирования, пример 356
Наследование вместо делегирования, техника 355
Наследование, замена делегированием 352—354
Наследование, замена делегированием, мотивировка 352
Наследование, замена делегированием, пример 354
Наследование, замена делегированием, техника 353
Наследование, разделение 360—365
Наследование, разделение, мотивировка 361
Наследование, разделение, примеры 365
Наследование, разделение, техника 361
Наследство, отказ от 98—99
Начисление бонусов, выделение в метод 38
Неуместная близость 97
Нисходящее преобразование типа инкапсуляция 310—311
Нулевой объект 262—269
Нулевой объект, мотивировка 264
Нулевой объект, пример 268
Нулевой объект, техника 264
Обобщение, методы реализации 321—356
Обобщение, методы реализации, выделение интерфейса 341—343
Обобщение, методы реализации, выделение подкласса 330—335
Обобщение, методы реализации, замена делегирования наследованием 354—356
Обобщение, методы реализации, замена наследования делегированием 352—354
Обобщение, методы реализации, подъем метода 323—325
Обобщение, методы реализации, подъем поля 322—323
Обобщение, методы реализации, подъем тела конструктора 326—328
Обобщение, методы реализации, свертывание иерархия 343—344
Обобщение, методы реализации, спуск метода 328
Обобщение, методы реализации, спуск поля 329
Обобщение, методы реализации, формирование шаблона метода 344—351
Оболочки, использование 178
Обратный указатель, определение 205
Общность, теоретическая 95
Объект вместо значения данных 184—187
Объект вместо значения данных, пример 187
Объект вместо значения данных, техника 185
Объект вместо массива 195—196
Объект вместо массива, мотивировка 194
Объект вместо массива, пример 196
Объект вместо массива, техника 195
Объект вместо методов 148—151
Объект вместо методов, мотивировка 148
Объект вместо методов, пример 148
Объект вместо методов, техника 148
Объект граничный, введение 297—302
Объект граничный, введение, мотивировка 297
Объект и методы 33
Объект, преобразование процедурного проекта в объектный 366—367
Объект, преобразование процедурного проекта в объектный, мотивировка 366
Объект, преобразование процедурного проекта в объектный, пример 367
Объект, преобразование процедурного проекта в объектный, техника 367
Объект, сохранение целиком 291— 294
Объект, сохранение целиком, механика 292
Объект, сохранение целиком, мотивировка 292
Объект, сохранение целиком, пример 294
Однонаправленная связь, замена двунаправленной 204—207
Однонаправленная связь, замена двунаправленной, мотивировка 205
Однонаправленная связь, замена двунаправленной, пример 207
Однонаправленная связь, замена двунаправленной, техника 205
Опубликованные интерфейсы 73
Особенности языка, затрудняющие рефакторинг 384—386
Отказ от наследства 98—99
Ошибки и боязнь написания тестов 114
Ошибки, выявление в тестах модулей 110
Ошибки, детектор и комплект тестов 103
Ошибки, рефакторинг помогает находить 65
Ошибки, рефакторинг, при исправлении 67
Параметризация метода 287
Параметры, добавление 279—280
Параметры, добавление, механика 280
Параметры, добавление, мотивировка 279
Параметры, замена методом 294—297
Параметры, замена методом, мотивировка 295
Параметры, замена методом, пример 297
Параметры, замена методом, техника 295
Параметры, замена явными методами 288—291
Параметры, замена явными методами, мотивировка 289
Параметры, замена явными методами, пример 291
Параметры, замена явными методами, техника 289
Параметры, удаление 280—281
Параметры, удаление присваиваний 144—147
Параметры, удаление, мотивировка 281
Параметры, удаление, техника 281
Паттерны банды четырех 52
Передача по значению в Java 144
Передача технологии 395—397
Переименование кода 32
Переменные временные 37
Переменные локальные 30 38
Переменные, введение поясняющих 137—140
Переменные, введение поясняющих, мотивировка 137
Переменные, введение поясняющих, пример 138
Переменные, введение поясняющих, техника 138
Переменные, расщепление временных 141—143
Переменные, расщепление временных, мотивировка 141
Переменные, расщепление временных, пример 142
Переменные, расщепление временных, техника 141
Поведение, перемещение в класс 219—220
Подкласс вместо кода типа 229—231
Подкласс вместо кода типа, мотивировка 229
Подкласс вместо кода типа, пример 231
Подкласс вместо кода типа, техника 229
Подкласс, выделение 330—335
Подкласс, выделение, мотивировка 330
Подкласс, выделение, пример 335
Подкласс, выделение, техника 331
Подкласс, замена полями 236—239
Подкласс, замена полями, мотивировка 236
Подкласс, замена полями, пример 239
Подкласс, замена полями, техника 237
Подкласс, использование 177
Подкласс, создание явными методами 309
Подъем метода 324—325
Подъем метода, мотивировка 324
Подъем метода, пример 325
Подъем метода, техника 324
Подъем тела конструктора 326—328
Поле временное 95
Поле, замена поля кода цены полем цены 54
Поле, инкапсуляция 212—213
Поле, инкапсуляция, мотивировка 213
Поле, инкапсуляция, техника 213
Поле, перемещение 158—161
Поле, перемещение, мотивировка 158
Поле, перемещение, применение самоинкапсуляции 161
Поле, перемещение, пример 160
Поле, перемещение, техника 159
Поле, подъем 322
Поле, подъем, мотивировка 322
Поле, подъем, техника 322
Поле, самоинкапсуляция 184—184
Поле, спуск 330
Поле, спуск, мотивировка 329
Поле, спуск, техника 330
Полиморфизм вместо условного оператора 259—262
Полиморфизм вместо условного оператора, мотивировка 259
Полиморфизм вместо условного оператора, пример 262
Полиморфизм вместо условного оператора, техника 260
Полиморфизм, замена условной логики 49— 60
Полужирный шрифт в коде 119
Посредник 96
Посредник, удаление 171—172
Посредник, удаление, мотивировка 171
Посредник, удаление, пример 172
Посредник, удаление, техника 171
Правило трех ударов 66
Предварительное проектирование 76
Предметная область, отделение от представления 368—372
Предметная область, отделение от представления, мотивировка 368
Предметная область, отделение от представления, пример 372
Предметная область, отделение от представления, техника 368
Представление 368
Присваивание параметрам, удаление 144—146
Присваивание параметрам, удаление, мотивировка 144
Присваивание параметрам, удаление, передача по значению в Java 145
Присваивание параметрам, удаление, пример 145
Присваивание параметрам, удаление, техника 144
Проверка кода возврата, вместо исключительных ситуаций 317—320
Проверка кода возврата, вместо исключительных ситуаций, пример 320
Проверка кода возврата, вместо исключительных ситуаций, техника 317
Программирование экстремальное 81
Программирование, стили, затрудняющие рефакторинг 384—386
Программирование, ускорение 65
Программное обеспечение и рефакторинг 66
Программное обеспечение, повторное использование 395—397
Программное обеспечение, рефакторинг не меняет видимого поведения 62
Программное обеспечение, рефакторинг улучшает композицию 63
Проект процедурный, преобразование в объекты 366—367
Проект процедурный, преобразование в объекты, мотивировка 366
Проект процедурный, преобразование в объекты, пример 367
Проект процедурный, преобразование в объекты, техника 367
Проектирование предварительное 76
Проектирование, изменения дизайна, трудные для рефакторинга 75
Проектирование, рефакторинг и 79
Производительность и рефакторинг 81
Разбор кода, рефакторинг при 67
Расходящиеся модификации 90
Расчеты, бонусы 50
Расчеты, перемещение для суммы 32
Расширение, введение локального 174—178
Расширение, введение локального, использование оболочек 177
Расширение, введение локального, использование подклассов 176
Расширение, введение локального, мотивировка 174
Расширение, введение локального, примеры 176
Расширение, введение локального, техника 175
Рефакторинг безопасный 390—393
Рефакторинг позволяет быстрее писать программы 65
Реклама