Рефакторинг в 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 Резюме
  • 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 Резюме
  • 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 Резюме
  • 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 Резюме
  • 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 Резюме
  • 183 Глава 7. Выделение метода, как мера против дублированного кода
    • 183 Инкапсуляция кода и сокрытие деталей
      • 184 Сокрытие информации и реализации
    • 187 Декомпозиция методов
      • 187 Пример длинного метода: вычисление длины окружности
      • 189 Выделение кода вычисления длины окружности
    • 193 Выделение кода вычисления радиуса
      • 193 Выделение кода «Ожидание закрытия пользователем»
      • 194 Выделение кода чтения координат
      • 197 Рефакторинг «Выделение метода» (Extract Method) в Visual Studio
    • 200 Встраивание методов
    • 202 Запах «Дублирование кода» (Duplicated Code)
      • 203 Источники дублированного кода
      • 203 Программирование копированием-вставкой
      • 204 Магические литералы
    • 206 Рефакторинги «Выделение метода» и «Замена магического литерала константой» в приложении «Прокат автомобилей»
    • 207 Резюме
  • 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 Резюме
  • 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 Резюме
  • 291 Глава 10. Расширенные объектно-ориентированные концепции и связанный с ними рефакторинг
    • 292 Наследование, полиморфизм и обобщения
      • 292 Наследование
      • 295 Сравнение наследования классов и наследования интерфейсов
      • 296 Полиморфизм
      • 299 Обобщения
    • 301 Злоупотребление наследованием и решения рефакторинга
      • 305 Ошибочное применение наследования вместо композиции и прочие злоупотребления
      • 310 Рефакторинг наследования на примере системы печати
      • 317 Использование делегирования вместо наследования в системе печати
    • 328 Использование обобщений
    • 331 Наследование и обобщенные типы в приложении «Прокат автомобилей»
      • 332 Выделение родительского класса
      • 332 Использование обобщений
    • 333 Выделение класса DataObjectsProvider
    • 337 Резюме
  • 339 Глава 11. Крупномасштабная организация кода
    • 339 Пространства имен
      • 340 Руководства по именованию и организации пространств имен
      • 340 Вложенные пространства имен
      • 340 Изменение названия пространства имен по умолчанию
    • 341 Применение директив using
    • 343 Сборки
      • 343 Бинарное повторное использование
      • 345 Принципы организации пространств имен
      • 350 Размышления о зависимостях
    • 357 Организация файловой структуры проекта C#
      • 358 Частичные классы
    • 364 Организация пространств имен и наследование форм Windows в приложении «Прокат автомобилей»
      • 364 Выделение родительской административной формы с использованием шаблона абстрактного вспомогательного класса
      • 371 Реорганизация пространства имен и сборки
    • 373 Резюме
  • 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 Резюме
  • 409 Глава 13. LINQ и другие расширения C# 3.0
    • 409 Выведение типа локальных переменных
      • 411 Автореализованные свойства
      • 413 Расширяющие методы
    • 419 Инициализаторы объектов, массивов и коллекций
      • 420 Опрос объектов с LINQ
      • 424 Старый пример в новом виде
      • 430 Объектно-реляционное отображение с помощью LINQ to SQL
      • 435 LINQ и приложение «Прокат автомобилей»
    • 442 Резюме
  • 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 Резюме
  • 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 Резюме
  • 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 совершенно бесплатно.
Рефакторинг в C# и ASP.NET для профессионалов
Рейтинг книги:
0 голосов
1937

Поиск книг:




При поиске учитываются только слова, длина которых больше 3-х символов.

Статистика: