Рефакторинг в C# и ASP.NET для профессионалов
Даниэль Арсеновски
В книге предлагается практический подход к проведению рефакторинга в C# и ASP.NET, который позволяет применять приемы рефакторинга при управлении и модификации существующего кода. Кроме того, вы научитесь строить прототип приложения с нуля и узнаете, как с помощью рефакторинга преобразовать прототип в хорошо спроектированное приложение уровня предприятия.
Рефакторинг представляет собой эффективный путь быстрого обнаружения и устранения проблемного кода. Благодаря пошаговым инструкциям, вы легко разберетесь с разнообразными проблемами, связанными с кодом, и трансформациями рефакторинга. Многие из этих трансформаций разработаны на основе реальных сценариев и являются результатом ключевых бизнес-решений. Вдобавок вы найдете формальные определения приемов рефакторинга, на которые можно будет ссылаться во время работы.
В этой книге описаны приемы рефакторинга, которые позволяют существенно повысить вашу производительность как разработчика. С помощью этой информации вы сможете эффективно реагировать на требования по изменению и улучшению дизайна унаследованного кода.
В этой книге описаны:
- Сборка инструментального набора для рефакторинга;
- Способы проведения тестирования модулей;
- Советы по рефакторингу по шаблонам проектирования;
- Использование рефакторинга для модернизации унаследованного кода C# и ASP.NET;
- Способы получения выгоды от выделения методов и исключения дублирования кода;
- Методы приведения кода к более простому, легко изменяемому и лучше понимаемому виду;
- Объектно-ориентированная теория и шаблоны проектирования;
- Способы использования LINQ и других усовершенствований, предлагаемых в версии C# 3.0.
Книга предназначена для разработчиков C# и ASP.NET разной квалификации, которые желают изучить способы эффективного управления и модификации своего кода с помощью инструментов и приемов рефакторинга.
Издательство: Диалектика, Вильямс, 2010 г.
ISBN 978-5-8459-1618-1, 978-0-470-43452-9
Количество страниц: 528.
Содержание книги «Рефакторинг в C# и ASP.NET для профессионалов»:
- 13 Об авторе
- 13 Благодарности
- 14 Введение
- 15 Для кого написана эта книга
- 16 Какие темы охватывает эта книга
- 17 Как организована эта книга
- 18 Что необходимо для использования этой книги
- 19 Соглашения
- 19 Врезки «Запах», «Рефакторинг» и «Принцип объектно-ориентированного проектирования»
- 19 Врезка «Запах»
- 20 Врезка «Рефакторинг»
- 20 Врезка «Принцип объектно-ориентированного проектирования»
- 20 Указатель запахов
- 21 Указатель рефакторингов
- 23 Указатель принципов объектно-ориентированного проектирования
- 23 Исходный код
- 23 От издательства
- 25 Глава 1. Рефакторинг: о чем весь этот шум?
- 25 Краткий обзор рефакторинга
- 26 Процесс рефакторинга
- 27 Взгляд на ситуацию в программном обеспечении
- 30 Более пристальный взгляд на процесс рефакторинга
- 30 Код с душком
- 30 Трансформация кода
- 31 Автоматизация трансформаций рефакторинга
- 31 Выгоды, которые дает рефакторинг
- 35 Разоблачение распространенных заблуждений
- 43 Ни один программист не одинок
- 45 Рефакторинг для представителей бизнеса
- 46 Язык C# и рефакторинг
- 47 Резюме
- 25 Краткий обзор рефакторинга
- 49 Глава 2. Первая проба рефакторинга
- 49 Пример приложения: калькулятор калорий
- 50 Приложение «Калькулятор калорий» с вычислением ежедневного рекомендуемого объема калорий
- 53 Расширение требований: вычисление идеального веса
- 55 Требования растут: нужно хранить данные о пациентах
- 57 Рефакторинг в действии
- 58 Декомпозиция метода btnCalculate_Click
- 59 Сегмент вычисления и отображения расхождения с идеальным весом
- 59 Вычисление калорий и идеального веса в соответствии с полом
- 60 Метод btnCalculate_Click после выделения методов
- 61 Исследование новых классов
- 63 Сужение интерфейса класса Patient
- 67 Реструктуризация метода DistanceFromIdealWeight
- 68 Добавление в CaloriesCalculator использования класса Patient
- 69 Создание иерархии классов Patient
- 74 Реализации функциональности постоянства
- 74 Сохранение данных
- 83 Реализация функциональности отображения истории
- 86 Приложение «Калькулятор калорий», улучшенная версия
- 88 Резюме
- 49 Пример приложения: калькулятор калорий
- 91 Глава 3. Сборка инструментария для рефакторинга
- 92 Использование автоматизированного инструмента рефакторинга
- 92 ReSharper от JetBrains
- 93 Refactor! Pro от Developer Express
- 94 Refactor! for ASP от Developer Express
- 95 Средства рефакторинга Visual Studio
- 97 Основы тестирования модулей: тестовая оснастка
- 97 Назначение каркаса тестирования модулей
- 100 Первое знакомство с NUnit
- 100 Установка NUnit
- 101 Работа с примерами
- 103 Реализация первого теста
- 110 Управляемый тестами подход
- 112 Другие инструменты тестирования
- 113 Управление версиями
- 113 Управление версиями как система резервного копирования
- 114 Управление версиями и параллелизм
- 114 Резюме
- 92 Использование автоматизированного инструмента рефакторинга
- 117 Глава 4. Прототип приложения: прокат автомобилей
- 118 Интервью с клиентом
- 118 Интервью с менеджером
- 119 Интервью с секретарем приемной
- 120 Интервью с сотрудником паркинга
- 120 Интервью с техническим персоналом
- 121 Первые шаги в проекте «Прокат автомобилей»
- 121 Актеры и сценарии использования
- 123 Состояния автомобиля
- 124 Первый набросок главного окна приложения
- 126 Совещание команды Rent-a-Wheels
- 126 Запуск прототипа в работу
- 126 Рассмотрение модели базы данных
- 128 Рассмотрение кода C#
- 132 Быстрый и яростный подход к программированию
- 132 Дизайн, управляемый базой данных
- 133 Приложения, основанные на графическом интерфейсе пользователя
- 133 Программирование, управляемое событиями
- 134 Быстрая разработка приложений
- 134 Копирование и вставка как механизм повторного использования кода
- 135 От прототипа к поставке готового продукта через процесс рефакторинга
- 135 Резюме
- 118 Интервью с клиентом
- 137 Глава 5. Основы гигиены
- 137 Исключение мертвого кода
- 139 Типы мертвого кода
- 140 Обычные источники мертвого кода
- 143 Сокращение области видимости и уровня доступа излишне открытых элементов
- 145 Область видимости и уровень доступа
- 147 Обычные источники излишней открытости
- 150 Как справиться с излишней открытостью
- 151 Использование явного импорта
- 151 Раздел using отражает зависимости в системе
- 154 Удаление неиспользуемых ссылок на сборки
- 155 Базовая гигиена проекта «Прокат автомобилей»
- 155 Резюме
- 157 Глава 6. От предметной области к коду: заполнение пробела
- 158 Понимание предметной области
- 159 Шаг 1: сбор информации
- 160 Шаг 2: согласование словаря
- 161 Шаг 3: описание взаимодействий
- 161 Шаг 4: построение прототипа
- 162 Руководства по именованию
- 163 Стили применения заглавных букв
- 163 Простые руководства по именованию
- 165 Хорошая выразительность: выбор правильных слов
- 169 Рефакторинг «Переименование» (Rename)
- 171 Рефакторинг «Переименование» (Rename) в Visual Studio
- 172 Опубликованные и общедоступные интерфейсы
- 173 Сравнение автономных приложений и многократно используемых модулей
- 177 Модификация опубликованных интерфейсов
- 181 Рефакторинги «Переименование» и «Безопасное переименование» и приложение «Прокат автомобилей»
- 182 Резюме
- 158 Понимание предметной области
- 183 Глава 7. Выделение метода, как мера против дублированного кода
- 183 Инкапсуляция кода и сокрытие деталей
- 184 Сокрытие информации и реализации
- 187 Декомпозиция методов
- 187 Пример длинного метода: вычисление длины окружности
- 189 Выделение кода вычисления длины окружности
- 193 Выделение кода вычисления радиуса
- 193 Выделение кода «Ожидание закрытия пользователем»
- 194 Выделение кода чтения координат
- 197 Рефакторинг «Выделение метода» (Extract Method) в Visual Studio
- 200 Встраивание методов
- 202 Запах «Дублирование кода» (Duplicated Code)
- 203 Источники дублированного кода
- 203 Программирование копированием-вставкой
- 204 Магические литералы
- 206 Рефакторинги «Выделение метода» и «Замена магического литерала константой» в приложении «Прокат автомобилей»
- 207 Резюме
- 183 Инкапсуляция кода и сокрытие деталей
- 209 Глава 8. Приемы консолидации и выделения методов
- 209 Обработка временных переменных
- 210 Рефакторинг «Перемещение объявления к месту ссылки» (Move Declaration Near Reference)
- 213 Рефакторинг «Перемещение инициализации к месту объявления» (Move Initialization to Declaration)
- 214 Рефакторинг «Расщепление временной переменной» (Split Temporary Variable)
- 218 Рефакторинг «Встраивание временной переменной» (Inline Temp)
- 220 Рефакторинг «Замена временной переменной вызовом метода» (Replace Temp with Query)
- 223 Введение поясняющей временной переменной
- 224 Работа с длинными и вложенными условными операторами
- 227 Реорганизация методов и приложение «Прокат автомобилей»
- 228 Удаление дублированного кода из приложения «Прокат автомобилей»
- 232 Магические литералы, комментарии и слепая обработка событий в приложении «Прокат автомобилей»
- 236 Резюме
- 209 Обработка временных переменных
- 239 Глава 9. Обнаружение объектов
- 240 Краткий обзор объектно-ориентированного программирования
- 240 Объекты в ООП
- 240 Инкапсуляция и объекты
- 242 Рефакторинг «Инкапсуляция поля» (Encapsulate Field) в Visual Studio
- 243 Сохранение состояния объекта
- 244 Классы
- 245 Идентичность объекта
- 246 Объекты как базовые строительные блоки
- 246 Корневой тип Object
- 247 Время жизни объекта и сборка мусора
- 249 Проектирование классов
- 249 Использование артефактов анализа
- 252 Классы — существительные, операции — глаголы
- 257 Классы, ответственности и кооперации
- 261 Применение карточек в сеансах мозгового штурма
- 265 Сущности и отношения
- 266 Выявление скрытых классов
- 267 Работа с проектом, управляемым базой данных
- 270 Переход от процедурного к объектно-ориентированному проектированию
- 276 Разделение предметной области, презентации и постоянного хранения
- 282 Обнаружение объектов в приложении «Прокат автомобилей»
- 289 Резюме
- 240 Краткий обзор объектно-ориентированного программирования
- 291 Глава 10. Расширенные объектно-ориентированные концепции и связанный с ними рефакторинг
- 292 Наследование, полиморфизм и обобщения
- 292 Наследование
- 295 Сравнение наследования классов и наследования интерфейсов
- 296 Полиморфизм
- 299 Обобщения
- 301 Злоупотребление наследованием и решения рефакторинга
- 305 Ошибочное применение наследования вместо композиции и прочие злоупотребления
- 310 Рефакторинг наследования на примере системы печати
- 317 Использование делегирования вместо наследования в системе печати
- 328 Использование обобщений
- 331 Наследование и обобщенные типы в приложении «Прокат автомобилей»
- 332 Выделение родительского класса
- 332 Использование обобщений
- 333 Выделение класса DataObjectsProvider
- 337 Резюме
- 292 Наследование, полиморфизм и обобщения
- 339 Глава 11. Крупномасштабная организация кода
- 339 Пространства имен
- 340 Руководства по именованию и организации пространств имен
- 340 Вложенные пространства имен
- 340 Изменение названия пространства имен по умолчанию
- 341 Применение директив using
- 343 Сборки
- 343 Бинарное повторное использование
- 345 Принципы организации пространств имен
- 350 Размышления о зависимостях
- 357 Организация файловой структуры проекта C#
- 358 Частичные классы
- 364 Организация пространств имен и наследование форм Windows в приложении «Прокат автомобилей»
- 364 Выделение родительской административной формы с использованием шаблона абстрактного вспомогательного класса
- 371 Реорганизация пространства имен и сборки
- 373 Резюме
- 339 Пространства имен
- 375 Глава 12. Рефакторинг по шаблонам проектирования
- 376 Шаблоны проектирования: о чем весь этот шум?
- 376 Определение шаблонов проектирования
- 377 Классификация шаблонов
- 378 Элементы шаблонов
- 378 Оценка преимуществ шаблонов проектирования
- 379 Использование шаблонов
- 379 Пример шаблона проектирования: Abstract Factory (Абстрактная фабрика)
- 379 Использование шаблона Abstract Factory
- 382 Подъем объявления объекта
- 389 Решение
- 392 Последствия
- 394 Шаблон Dependency Injection (Внедрение зависимости)
- 394 Проблема при использовании шаблона Dependency Injection (DI)
- 397 Решение
- 397 Сравнение внедрения на основе конструктора и внедрения на основе свойства
- 398 Какую реализацию службы внедрять
- 400 Преимущества шаблона DI
- 402 Рефакторинг для использования DI
- 403 Рефакторинг по шаблонам и приложение «Прокат автомобилей»
- 403 Исключение кода, дублирующего функциональность .NET Framework
- 403 Внедрение классов данных в классы графического интерфейса пользователя через шаблон Dependency Injection (DI)
- 407 Шаблон постоянного хранения CRUD
- 407 Резюме
- 376 Шаблоны проектирования: о чем весь этот шум?
- 409 Глава 13. LINQ и другие расширения C# 3.0
- 409 Выведение типа локальных переменных
- 411 Автореализованные свойства
- 413 Расширяющие методы
- 419 Инициализаторы объектов, массивов и коллекций
- 420 Опрос объектов с LINQ
- 424 Старый пример в новом виде
- 430 Объектно-реляционное отображение с помощью LINQ to SQL
- 435 LINQ и приложение «Прокат автомобилей»
- 442 Резюме
- 409 Выведение типа локальных переменных
- 445 Глава 14. Краткая история Веб для разработчиков и инструментарий ASP.NET
- 446 Refactor! for ASP.NET
- 447 Вызов Refactor! for ASP.NET
- 449 Пользовательский интерфейс Refactor! for ASP.NET
- 453 История и наследие HTML
- 454 История HTML
- 462 В ногу с Веб
- 462 Visual Studio и XHTML
- 463 XML и кодировка
- 464 Проверка DTD-определения для HTML в Visual Studio
- 465 Передача строгого XHTML
- 467 Резюме
- 446 Refactor! for ASP.NET
- 469 Глава 15. Рефакторинг приложений ASP.NET
- 470 Рефакторинг HTML
- 470 Хорошо оформленные документы XHTML
- 472 Действительность XHTML
- 474 Инструментальная поддержка обновления унаследованной, не совместимой с XHTML разметки
- 475 Улучшение внешнего вида кода документов HTML
- 476 Отделение структуры от презентации
- 482 Использование HTTP c REST
- 487 Рефакторинг кода ASP.NET
- 487 Модель кода ASP.NET: однофайловая или отделенного кода
- 491 Мастер-страницы
- 494 Пользовательские веб-элементы и специальные серверные элементы управления
- 500 Приложение «Прокат автомобилей» и рефакторинги ASP.NET
- 503 Резюме
- 470 Рефакторинг HTML
- 504 Приложение A. Внутренняя структура прототипа приложения «Прокат автомобилей»
- 504 Код обработки щелчка на кнопке Hand Over
- 505 Код обработки щелчка на кнопке Receive
- 505 Код обработки щелчка на кнопке Charge
- 506 Код обработки щелчка на кнопке Change Branch
- 510 Кнопки To Maintenance и From Maintenance
- 510 Форма администрирования парка автомобилей
- 511 Процедура обработки события щелчка на кнопке Delete
- 511 Процедура обработки события щелчка на кнопке New
- 511 Процедура обработки события щелчка на кнопке Reload
- 512 Процедура обработки события Form Load
- 514 Код класса формы администрирования парка автомобилей: поля
- 515 Процедура обработки события щелчка на кнопке навигации
- 516 Процедура обработки события щелчка на кнопке Save
- 517 Процедура обработки кнопки Display
- 522 Резюме
- 523 Приложение Б. Настройка Refactor! for ASP.NET
- 525 Предметный указатель
Инструкция как скачать книгу Даниэль Арсеновски: Рефакторинг в C# и ASP.NET для профессионалов в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.