 |
Рефакторинг с использованием шаблонов
Джошуа Кериевски
Год выпуска: 2019
Изд-во: Диалектика-Вильямс
ISBN: 978-5-907144-79-8
Переплёт: твердый
400 страниц
Цена: 800.00 грн.
|
Книга "Рефакторинг с использованием шаблонов" представляет результаты многолетнего опыта профессионального программиста по применению шаблонов проектирования (паттернов). Авторский подход к проектированию состоит в том, что следует избегать как недостаточного, так и избыточного проектирования, постоянно анализируя готовый работоспособный код и реорганизуя его только в том случае, когда это приведет к повышению его эффективности, упрощению его понимания и сопровождения.
Шаблоны проектирования - не панацея, так что бывают как ситуации, когда такая реорганизация должна выполняться с использованием шаблонов проектирования, так и ситуации, когда наилучшее решение состоит в отказе от них
Джошуа Кериевски на основании как собственного, так и чужого опыта детально рассматривает различные признаки кода, требующего рефакторинга, описывает, какой именно рефакторинг наилучшим образом подходит для той или иной ситуации, и описывает его механику, подробно разбирая ее на конкретных примерах из реальных задач. Книга "Рефакторинг с использованием шаблонов" может рассматриваться и как учебник по рефакторингу для программиста среднего уровня, и как справочное пособие для профессионала, которое может подсказать, какое именно решение стоит принять в той или иной сложной ситуации.
Содержание книги Джошуа Кериевски "Рефакторинг с использованием шаблонов"
Предисловие Ральфа Джонсона 17 Предисловие Мартина Фаулера 19 Введение 23 О чем эта книга 23 Каковы цели этой книги 23 Кому следует читать эту книгу 24 Какие знания вам необходимы 24 Как пользоваться этой книгой 26 История книги 26 Стоя на плечах гигантов 27 Благодарности 28 Глава 1. Почему я написал эту книгу 31 Избыточное проектирование 31 Панацея шаблонов проектирования 32 Недостаточное проектирование 33 Управляемая тестами разработка и постоянная реорганизация кода 35 Рефакторинг и шаблоны 36 Эволюционирующее проектирование 38 Глава 2. Рефакторинг 39 Что такое рефакторинг 39 Что побуждает нас реорганизовывать код 40 Множество точек зрения 41 Удобочитаемый код 42 Поддержание чистоты 44 Малые шаги 44 Долги проектирования 45 Развивая новую архитектуру 46 Составные и управляемые тестами реорганизации кода 47 Преимущества составных рефакторингов 49 Средства реорганизации кода 50 Глава 3. Шаблоны 53 Что такое шаблон 53 Удовольствие от шаблонов 54 Много способов реализации шаблона 56 Рефакторинг к шаблонам, по направлению к шаблонам и с отказом от шаблонов 59 Делают ли шаблоны код более сложным 62 Знание шаблонов 63 Использование шаблонов на ранних этапах проектирования 64 Глава 4. Признаки плохого кода 67 Duplicated Code 69 LongMethod 70 Conditional Complexity 71 Primitive Obsession 71 Indecent Exposure 72 Solution Sprawl 73 Alternative Classes with Different Interfaces 73 Lazy Class 74 Large Class 74 Switch Statements 74 Combinatorial Explosion 75 Oddball Solution 75 Book_Refactoring. Глава 5. Каталог рефакторингов к шаблонам 77 Формат рефакторингов 77 Проекты, упоминаемые в этом каталоге 79 Генераторы XML 79 Синтаксический анализатор HTML 80 Калькулятор рисков при ссудах 80 Отправная точка 81 Последовательность изучения 81 Глава 6. Создание объектов 83 Replace Constructors with Creation Methods 84 Мотивация 85 Механика 87 Пример 88 Разновидности 94 Move Creation Knowledge to Factory 96 Мотивация 97 Механика 100 Пример 101 Encapsulate Classes with Factory 108 Мотивация 109 Механика 110 Пример 111 Разновидности 114 Introduce Polymorphic Creation with Factory Method 116 Мотивация 117 Механика 118 Пример 119 Encapsulate Composite with Builder 124 Механика 127 Пример 127 Разновидности 140 Inline Singleton 143 Мотивация 144 Механика 146 Пример 147 Глава 7. Упрощение 151 ComposeMethod 152 Мотивация 152 Механика 154 Пример 155 Replace Conditional Logic with Strategy 158 Мотивация 159 Механика 160 Пример 162 Move Embellishment to Decorator 174 Мотивация 174 Механика 178 Пример 180 Replace State-Altering Conditionals with State 197 Мотивация 198 Механика 199 Пример 200 Replace Implicit Tree with Composite 210 Мотивация 211 Механика 214 Пример 215 Replace Conditional Dispatcher with Command 224 Мотивация 225 Механика 226 Пример 228 Глава 8. Обобщение 237 Form Template Method 239 Мотивация 240 Механика 241 Пример 242 ExtractComposite 248 Мотивация 249 Механика 249 Пример 251 Replace One/Many Distinctions with Composite 258 Мотивация 259 Механика 261 Пример 262 Replace Hard-Coded Notifications with Observer 271 Мотивация 271 Механика 273 Пример 274 Unify Interfaces withAdapter 283 Мотивация 284 Механика 285 Пример 287 Extract Adapter 295 Мотивация 296 Механика 298 Пример 298 Вариации 306 Replace Implicit Language with Interpreter 307 Мотивация 308 Механика 310 Пример 311 Глава 9. Защита кода 323 Replace Type Code with Class 324 Мотивация 325 Механика 326 Пример 328 Limit Instantiation with Singleton 335 Мотивация 335 Механика 336 Пример 337 Introduce Null Object 340 Мотивация 341 Механика 343 Пример 344 Глава 10. Накопление информации 351 Move Accumulation to Collecting Parameter 352 Мотивация 353 Механика 354 Пример 355 Move Accumulation to Visitor 359 Мотивация 360 Механика 364 Пример 369 Глава 11. Утилиты 379 Chain Constructors 380 Мотивация 381 Механика 381 Пример 381 Unify Interfaces 384 Мотивация 385 Механика 385 Пример 386 Extract Parameter 387 Мотивация 387 Механика 388 Пример 388 Послесловие 391 Список литературы 392 Предметный указатель 394
|