Авторизация
Поиск по указателям
Фаулер М., Бек К., Брант Д., Апдайк У., Робертс Д. — Рефакторинг. Улучшение существующего кода
Обсудите книгу на научном форуме
Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter
Название: Рефакторинг. Улучшение существующего кода
Авторы: Фаулер М., Бек К., Брант Д., Апдайк У., Робертс Д.
Аннотация: Подход к улучшению структурной целостности и производительности существующих программ, называемый рефакторингом, получил развитие благодаря усилиям экспертов в области ООП, написавших эту книгу. Каждый шаг рефакторинга прост. Это может быть перемещение поля из одного класса в другой, вынесение фрагмента кода из метода и превращение его в самостоятельный метод или даже перемещение кода по иерархии классов. Каждый отдельный шаг может показаться элементарным, но совокупный эффект таких малых изменений в состоянии радикально улучшить проект или даже предотвратить распад плохо спроектированной программы.
Мартин Фаулер с соавторами пролили свет на процесс рефакторинга, описав принципы и лучшие приемы его осуществления, а также указав, где и когда следует начинать углубленное изучение кода с целью его улучшения. Основу книги составляет подробный перечень более 70 методов рефакторинга, для каждого из которых описываются мотивация и техника испытанного на практике преобразования кода с примерами на Java. Рассмотренные в книге методы позволяют поэтапно модифицировать код, внося каждый раз небольшие изменения, благодаря чему снижается риск, связанный с развитием проекта. .
Язык:
Статус предметного указателя: Готов указатель с номерами страниц
ed2k: ed2k stats
Год издания: 2003
Количество страниц: 432
Добавлена в каталог: 18.05.2005
Операции: Положить на полку |
Скопировать ссылку для форума | Скопировать ID
Предметный указатель
Account, класс 300—302
amountFor, метод 30 31
API, интерфейс. 74
ASCII (American Standard Code for Information Interchange), стандарт 42 48
AWT (Abstract Windows Toolkit), пакет абстрактных классов для реализации оконного интерфейса 89
BSD (Berkeley Software Distribution), файловая система 387
C-++ программы, рефакторинг 383—386
C-++ программы, рефакторинг, завершающие комментарии 386
C-++ программы, рефакторинг, особенности языка, затрудняющие рефакторинг 384—386
C-++ программы, рефакторинг, стили программирования, затрудняющие рефакторинг 384—386
case, предложение в родительском классе 57
ChildrensPrice, класс 57
Customenstatement, метод 36
Customer, класс 24 35 39 42 265 347
Customer, класс реализует интерфейс Nullable 266
DateRange, класс 299
Department, класс 339
Department.getTotalAnnualCost, метод 338
double getPrice, метод 135—137
double, тип 30
each, переменная 27
Employee, класс 260 332 337—339
Employee.getAnnualCost, метод 337
EmployeeType, класс 261
EndFieId_FocusLost, метод 199
Engineer, класс 261
Entry, класс 298
FileReaderTester, класс 104—106
frequentRenterPoints, временная переменная 38 42—43
getCharge, метод 49^50 55—56
getFrequeutRenterPomts, метод 50 58
getPriceCode 54
GUI (Graphical User Interface), графический интерфейс пользователя 197 200 368
GUI, класс 89 180
HTML, язык разметки 25—26 27 42
HtmlStatement, класс 348—349
htmlStatement, метод 48
IntervalWindow, класс 201
Java, язык Java 1.1 220—221
Java, язык Java 2 216—218
Java, язык передача по значению в 145
Jobltem, класс 335
JUnit, среда тестирования 104—110
JUnit, среда тестирования, тесты модулей и функциональные тесты 109—110
LaborItem, класс 334—335
LengthField_FocusLost, метод 199—200
MasterTester, класс 114
Movie, класс 23 49 51 52—53 53—55 58
Movie, класс, использование наследования с 52
Movie, класс, подклассы 52
MVC (Model-View-Controller), шаблон создания пользовательского интерфейса «модель-представление-контроллер» 198 368
NewReleasePrice, класс 57 58
Null, объект, пример, тестирующий интерфейс 269
Null, объект, различные особые случаи 269
NullCustomer, класс 266. 267
Party, класс 339
Price, класс 55—56 58
Price, класс, перемещение метода в 58
Price.getCharge, метод 57
RegularPrice, класс 57
Rental, класс 23 39 49—51
Rental-getCharge, метод 36
Salesman, класс 262
Site, класс 265 266
StartField_FocusLost, метод 199
Statement, класс 350
statement, метод, декомпозиция и перераспределение 27—48
switch, операторы 93
testEmptyRead, метод 112
testRead, метод 107
testReadAtEnd, метод 111
testReadBoundaries() throws IOЕхсерtion, возбуждение исключений 112
TextStatement, класс 347—349
thisAmount, переменная 27 37
totalAmoimt, переменная 42
totalAmoimt, переменная замена 43
UML (Unified Modeling Language), унифицированный язык моделирования 118
UML (Unified Modeling Language), унифицированный язык моделирования диаграммы 41
Алгоритм, замена 151—152
База данных, проблемы с 72—73
База данных, программы 404
Библиотечный класс, неполный 97
Близость, неуместная 96—97
Большой класс 88—89
Бонусы, выделение в метод. 38
Бонусы, начисление 50
Броузер рефахсторинга 402
Вложенные условные операторы, замена граничным оператором 253—257
Вложенные условные операторы, замена граничным оператором, мотивировка 254
Вложенные условные операторы, замена граничным оператором, пример 256
Вложенные условные операторы, замена граничным оператором, пример, обращение условий 257
Вложенные условные операторы, замена граничным оператором, техника 254
Внешний метод, введение 172—174
Внешний метод, введение, мотивировка 173
Внешний метод, введение, пример 174
Внешний метод, введение, техника 173
Временная переменная 37
Временная переменная, встраивание 132—133
Временная переменная, замена вызовом метода 133—137
Временная переменная, замена вызовом метода, мотивировка 133
Временная переменная, замена вызовом метода, пример 135
Временная переменная, замена вызовом метода, техника 134
Временная переменная, замена запросом 133
Временная переменная, расщепление 143
Временная переменная, удаление 42
Временное поле 95
Выделение интерфейса 341—343
Выделение интерфейса, мотивировка 342
Выделение интерфейса, пример 343
Выделение интерфейса, техника 342
Выделение класса 161—165
Выделение класса, мотивировка 162
Выделение класса, пример 165
Выделение класса, техника 162
Выделение метода 30 38 124—130 139
Выделение подкласса 330—335
Выделение подкласса, мотивировка 330
Выделение подкласса, пример 335
Выделение подкласса, техника 331
Выделение родительского класса 336—340
Выделение родительского класса, мотивировка 336
Выделение родительского класса, пример 340
Выделение родительского класса, техника 337
Вызов метода, вместо временной переменной 37 133—137
Вызовы методов 320
Выражения условные 273
Граничные операторы вместо вложенных условных операторов 253—257
Граничные операторы вместо вложенных условных операторов, пример 256
Граничные операторы вместо вложенных условных операторов, пример, обращение условий 256
Граничные операторы вместо вложенных условных операторов, техника 254
Граничные условия 112
Граничный объект 297—302
Граничный объект, пример 298
Группы данных 92
Данные группы 92
Данные, дублирование видимых 198—204
Данные, дублирование видимых, мотивировка 198
Данные, дублирование видимых, пример 204
Данные, дублирование видимых, техника 199
Данные, класс 98
Данные, организация 179—239
Данные, организация, дублирование видимых 197—204
Данные, организация, замена двунаправленной связи однонаправленной 207—211
Данные, организация, замена записи классом данных 222—227
Данные, организация, замена значения данных объектом 184—187
Данные, организация, замена значения ссылкой 187—191
Данные, организация, замена кода типа классом 223—228
Данные, организация, замена кода типа подклассами 228—231
Данные, организация, замена кода типа состоянием/стратегией 231—236
Данные, организация, замена магического числа символической константой 211—212
Данные, организация, замена массива объектом 194—196
Данные, организация, замена однонаправленной связи двунаправленной 204—207
Данные, организация, замена подкласса полями 236—239
Данные, организация, замена ссылки значением 191—193
Данные, организация, инкапсуляция коллекции 214—222
Данные, организация, инкапсуляция поля 212—213
Данные, организация, использование слушателей событий 204
Данные, организация, самоинкапсуляция поля 181—184
Двунаправленная связь, замена однонаправленной 207—211
Двунаправленная связь, замена однонаправленной, мотивировка 208
Двунаправленная связь, замена однонаправленной, пример 211
Двунаправленная связь, замена однонаправленной, техника 209
Делегирование вместо наследования 352—354
Делегирование вместо наследования, мотивировка 352
Делегирование вместо наследования, пример 354
Делегирование вместо наследования, техника 353
Делегирование, замена наследованием 354—356
Делегирование, замена наследованием, мотивировка 355
Делегирование, замена наследованием, пример 356
Делегирование, замена наследованием, техника 355
Делегирование, сокрытие 168—170
Делегирование, сокрытие, мотивировка 168
Делегирование, сокрытие, пример 170
Делегирование, сокрытие, техника 169
Дерево синтаксического разбора 405
Диаграммы, UML (Unified Modeling Language) 40—41
Длинный метод 87—88
Длинный список параметров 89—90
Дублирование кода 86—87
Завистливые функции 91
Замена временной переменной totalAmount 43
Замена ссылки значением 191—193
Замена ссылки значением, мотивировка 192
Замена ссылки значением, пример 193
Замена ссылки значением, техника 192
Замена ссылкой 187—191
Замена ссылкой, мотивировка 188
Замена ссылкой, пример 191
Замена ссылкой, техника 188
Запись, замена классом данных 222
Запрос, мотивировка 282
Запрос, отделение от модификатора 282—285
Запрос, пример 285
Запрос, проблемы параллельного выполнения 285
Запрос, техника 283
Значение, замена данных объектом 184—187
Значение, замена данных объектом, мотивировка 184
Значение, замена данных объектом, пример 187
Значение, замена данных объектом, техника 185
Зрелость методов рефакторинга 122
Иерархии наследования, параллельные 94
Иерархия, выделение 372—375
Иерархия, выделение, мотивировка 373
Иерархия, выделение, пример 375
Иерархия, выделение, техника 374
Иерархия, свертывание 343—344
Иерархия, свертывание, мотивировка 343
Иерархия, свертывание, техника 344
Инкапсуляция коллекции 214—222
Инкапсуляция коллекции, мотивировка 214
Инкапсуляция коллекции, перемещение поведения в класс 220
Инкапсуляция коллекции, примеры 215
Инкапсуляция коллекции, примеры, Java 1.1 221
Инкапсуляция коллекции, примеры, Java 2 218
Инкапсуляция коллекции, примеры, инкапсулирование массивов 221
Инкапсуляция коллекции, техника 215
Инкапсуляция нисходящего преобразования типа 311
Инкапсуляция нисходящего преобразования типа, мотивировка 310
Инкапсуляция нисходящего преобразования типа, пример 311
Инкапсуляция нисходящего преобразования типа, техника 311
Инкапсуляция поля 212—213
Инкапсуляция поля, мотивировка 213
Инкапсуляция поля, само- 181—184
Инкапсуляция поля, техника 213
Инструменты для рефакторинга 401—407
Инструменты для рефакторинга технические критерии 405
Инструменты для рефакторинга точность 405
Инструменты для рефакторинга, база данных программы 404
Инструменты для рефакторинга, деревья синтаксического разбора 405
Инструменты для рефакторинга, краткое заключение 407
Инструменты для рефакторинга, практические критерии 407
Инструменты для рефакторинга, практические критерии, интеграция с другими инструментами 407
Инструменты для рефакторинга, практические критерии, отмена 407
Инструменты для рефакторинга, практические критерии, скорость 406
Интерфейсы опубликованные 73
Интерфейсы, альтернативные классы с разными 97
Интерфейсы, выделение 342—343
Интерфейсы, выделение, мотивировка 342
Интерфейсы, выделение, пример 343
Интерфейсы, выделение, техника 342
Интерфейсы, изменение 75
Исключительные ситуации вместо кода ошибки 312—317
Исключительные ситуации вместо кода ошибки, пример 313
Исключительные ситуации вместо кода ошибки, техника 313
Исключительные ситуации непроверяемые 315
Исключительные ситуации проверяемые 317
Исключительные ситуации тесты и 113
Исключительные ситуации, замена проверкой 317—320
Исключительные ситуации, замена проверкой, мотивировка 317
Исключительные ситуации, замена проверкой, пример 320
Исключительные ситуации, замена проверкой, техника 317
Истоки рефакторинга 83
Класс Account 302
Класс ChildrensPrice 57
Класс Customer 24 35 39 42 265 347
Класс Customer реализует интерфейс Nullable 266
Класс DateRange 299
Класс Department 339
Класс Employee 260 332 339
Класс EmployeeType 261
Класс Engineer 261
Класс Entry 298
Класс FileReaderTester 106
Класс GUI 89 180
Класс HtmlStatement 349
Класс IntervalWindow 199 201
Класс JobItem 335
Класс LaborItem 335
Класс MasterTester 114
Класс Movie 23 49 51 53 55 58
Класс NewReleasePrice 57 58
Класс NullCustomer 266 267
Класс Party 339
Класс Price 56 58
Класс RegularPrice 57
Класс Rental 23 39 51
Класс Salesman 262
Класс Site 266
Класс Statement 350
Класс TextStatement 349
Класс большой 88—89
Классы 265
Классы альтернативные 97
Классы библиотечные неполные 97
Классы вместо кода типа 222— 228
Классы данных 93
Классы данных вместо записи 222
Классы данных вместо записи, мотивировка 222
Классы ленивые 94
Классы, встраивание 165—167
Классы, встраивание, мотивировка 165
Классы, встраивание, пример 167
Классы, встраивание, техника 166
Классы, выделение 161—165
Классы, выделение, мотивировка 162
Классы, выделение, пример 165
Классы, выделение, техника 162
Классы, перемещение поведения в 219—220
Код ошибки, замена исключительной ситуацией 312—317
Код ошибки, замена исключительной ситуацией, мотивировка 312
Реклама