Инфраструктура программных проектов. Соглашения, идиомы и шаблоны для многократно используемых библиотек .NET (+ CD-ROM)

Кржиштоф Цвалина, Брэд Абрамс

Издание позволит разработчикам освоить лучшие приемы разработки многократно используемых библиотек для Microsoft .NET Framework. Расширенное и обновленное для .NET 3.5, это новое издание фокусирует внимание на разработке тех частей, которые непосредственно определяют применение в программах библиотеки классов, особенно общедоступных API.

Книга облегчит работу любого .NET-разработчика, который разрабатывает код, предназначенный для других разработчиков. Она содержит аннотации к правилам, принадлежащие тридцати пяти выдающимся архитекторам и программистам .NET Framework, оживленные обсуждения причин, по которым были введены данные правила, а также примеры, показывающие, когда можно нарушить обсуждаемые правила.

Издательство: Вильямс, 2011 г.

ISBN 978-5-8459-1692-1, 978-0-321-54561-9

Количество страниц: 416.

Содержание книги «Инфраструктура программных проектов. Соглашения, идиомы и шаблоны для многократно используемых библиотек .NET (+ CD-ROM)»:

  • 17 Предисловие
  • 19 Предисловие к первому изданию
  • 21 Предисловие
  • 25 Благодарности
  • 27 Об авторах
  • 29 О комментаторах
  • 37 1 Введение
    • 39 1.1. Характеристики правильно спроектированной инфраструктуры
      • 39 1.1.1. Правильно спроектированные инфраструктуры просты
      • 40 1.1.2. Правильно спроектированные инфраструктуры обходятся дорого
      • 40 1.1.3. Правильно спроектированные инфраструктуры полны компромиссов
      • 41 1.1.4. Учет опыта в правильно спроектированных инфраструктурах
      • 41 1.1.5. Правильно спроектированные инфраструктуры проектируются так, чтобы их можно было расширить
      • 42 1.1.6. Правильно спроектированные инфраструктуры интегрированы
      • 42 1.1.7. Правильно спроектированные инфраструктуры непротиворечивы
  • 43 2 Основные принципы разработки инфраструктуры
    • 45 2.1. Прогрессивные инфраструктуры
    • 48 2.2. Фундаментальные принципы разработки инфраструктуры
      • 49 2.2.1. Принцип дизайна, основанного на сценариях
      • 54 2.2.2. Принцип низкого барьера для доступа
      • 59 2.2.3. Принцип самодокументирования объектных моделей
      • 65 2.2.4. Принцип многоуровневой архитектуры
  • 69 3 Рекомендации по обозначениям
    • 70 3.1. Соглашения о прописных буквах
      • 70 3.1.1. Правила использования прописных букв в идентификаторах
      • 72 3.1.2. Набор акронимов прописными буквами
      • 74 3.1.3. Использование прописных букв в составных словах и общепринятых терминах
      • 75 3.1.4. Чувствительность к регистру
    • 76 3.2. Общие соглашения об именах
      • 77 3.2.1. Выбор слов
      • 79 3.2.2. Использование сокращений и акронимов
      • 79 3.2.3. Избегайте названий, специфических для языка
      • 81 3.2.4. Обозначение новых версий для существующих API
    • 83 3.3. Названия сборок и DLL
    • 85 3.4. Названия пространств имей
      • 86 3.4.1. Пространства имен и конфликты с именами типов
    • 88 3.5. Названия классов, структур и интерфейсов
      • 91 3.5.1. Названия параметров универсальных типов
      • 92 3.5.2. Названия общих типов
      • 93 3.5.3. Обозначение перечислений
    • 95 3.6. Имена членов типа
      • 95 3.6.1. Названия методов
      • 95 3.6.2. Названия свойств
      • 97 3.6.3. Названия событий
      • 98 3.6.4. Обозначение полей
    • 99 3.7. Обозначение параметров
      • 100 3.7.1. Обозначение параметров перегружаемых операторов
    • 100 3.8. Обозначение ресурсов
  • 103 4 Рекомендации по разработке типов
    • 105 4.1. Типы и пространства имен
      • 108 4.1.1. Стандартные названия подпространств имен
    • 110 4.2. Выбор между классом и структурой
    • 113 4.3. Выбор между классом и интерфейсом
    • 119 4.4. Дизайн абстрактных классов
    • 121 4.3. Разработка статических классов
    • 122 4.6. Проект интерфейса
    • 124 4.7. Разработка структур
    • 126 4.8. Разработка перечислений
      • 132 4.8.1. Проектирование перечислений флажков
      • 136 4.8.2. .Добавление значений к перечислениям
    • 137 4.9. Вложенные типы
    • 139 4.10. Типы и метаданные шорки
  • 141 5 Проектирование членов
    • 141 5.1. Общие рекомендации по разработке членов
      • 141 5.1.1. Перегрузка членов
      • 147 5.1.2. Явная реализация членов интерфейса
      • 151 5.1.3. Выбор между свойствами и методами
    • 156 5.2. Разработка свойств
      • 158 5.2.1. Разработка индексированных свойств
      • 159 5.2.2. События, уведомляющие об изменении свойств
    • 161 5.3. Разработка конструкторов
      • 166 5.3.1. Рекомендации для конструктора типов
    • 168 5.4. Разработка событий
      • 173 5.4.1. Разработка обработчика событий пользователем
    • 174 5.5. Разработка полей
    • 176 5.6. Методы расширения
    • 181 5.7. Перегрузка операторов
      • 185 5.7.1. Перегрузка оператора operator==
      • 185 5.7.2. Операторы преобразования
    • 187 5.8. Разработка параметров
      • 189 5.8.1. Выбор между перечислениями и булевыми параметрами
      • 190 5.8.2. Проверка правильности параметров
      • 193 5.8.3. Передача параметров
      • 196 5.8.4. Члены с переменным числом параметров
      • 199 5.8.5. Параметры-указатели
  • 201 6 Проектирование с целью расширяемости
    • 201 6.1. Механизмы расширяемости
      • 202 6.1.1. Негерметичные классы
      • 203 6.1.2. Защищенные члены
      • 204 6.1.3. События и обратные вызовы
      • 208 6.1.4. Виртуальные члены
      • 210 6.1.5. Абстракции (абстрактные типы и интерфейсы)
    • 212 6.2. Базовые классы
    • 214 6.3. Герметизация
  • 217 7 Исключения
    • 221 7.1. Вызов исключения
    • 226 7.2. Выбор правильного типа вызываемого исключения
      • 229 7.2.1. Разработка сообщений об ошибках
      • 231 7.2.2. Обработка особых ситуаций
      • 235 7.2.3. Обертывание исключений
    • 237 7.3. Использование стандартных типов исключений
      • 237 7.3.1. Исключения Exception и SystemException
      • 237 7.3.2. Исключение ApplicationException
      • 238 7.3.3. Исключение InvalidOperationException
      • 238 7.3.4. Исключения ArgumentException, ArgumentNullException и ArgumentOutOfRangeException
      • 239 7.3.5. Исключения NullReferenceException, IndexOutOfRangeException и AccessViolationException
      • 240 7.3.6. Исключение StackOverflowException
      • 240 7.3.7. Исключение OutOfMemoryException
      • 241 7.3.8. Исключения ComException, SEHException и ExecutionEngineException
    • 241 7.4. Проектирование пользовательских исключений
    • 243 7.5. Исключения и производительность
      • 243 7.5.1. Шаблон Tester-Doer)
      • 244 7.5.2. Шаблон Try-Parse)
  • 247 8 Рекомендации по использованию
    • 247 8.1. Массивы
    • 249 8.2. Атрибуты
    • 251 8.3. Коллекции
      • 253 8.3.1. Параметры-коллекции
      • 254 8.3.2. Свойства коллекции и возвращаемые значения
      • 257 8.3.3. Выбор между массивами и коллекциями
      • 258 8.3.4. Реализация пользовательских коллекций
    • 260 8.4. Типы DateTime и DateTimeOffset
    • 262 8.5. Интерфейс ICloneable
    • 263 8.6. IComparable<T> и IEquatable<T>
    • 265 8.7. IDisposable
    • 265 8.8. Nullable<T>
    • 266 8.9. Объект Object
      • 266 8.9.1. Object.Equals
      • 268 8.9.2. Хеш-функция Object.GetHashCode
      • 269 8.9.3. Метод Object.ToString
    • 271 8.10. Сериализация – преобразование в последовательную форму
      • 272 8.10.1. Выбор подходящей для поддержки технологии преобразования в последовательную форму
      • 273 8.10.2. Поддержка преобразования в последовательную форму в соответствии с контрактом данных
      • 277 8.10.3. Поддержка преобразования в последовательную XML-форму
      • 278 8.10.4. Поддержка преобразования в последовательную форму во время выполнения
    • 280 8.11. Тип Uri
    • 281 8.12. Использование System.Xml
    • 282 8.13. Операторы равенства
      • 283 8.13.1. Операторы равенства па типах значений
      • 283 8.13.2. Операторы равенства па ссылочных типах
  • 285 9 Общие шаблоны проектирования
    • 285 9.1. Составные компоненты
      • 287 9.1.1. Компонентно-ориентированный дизайн
      • 289 9.1.2. Факторизованные компоненты
      • 290 9.1.3. Рекомендации по объединению составляющих
    • 293 9.2. Асинхронные шаблоны Async
      • 293 9.2.1. Выбор одною из асинхронных шаблонов Async
      • 295 9.2.2. Классический асинхронный шаблон Classic Async
      • 298 9.2.3. Пример базовой реализации классического асинхронного шаблона Classic Async
      • 299 9.2.4. Основанный на событиях асинхронный шаблон Event-Based Async
      • 301 9.2.5. Поддержка out- и ref-параметров
      • 301 9.2.6. Поддержка отмены
      • 302 9.2.7. Поддержка сообщения о продвижении
      • 304 9.2.8. Поддержка приращений – возрастающих результатов
    • 304 9.3. Зависимые свойства
      • 305 9.3.1. Разработка зависимых свойств
      • 307 9.3.2. Разработка прикрепленных зависимых свойств
      • 308 9.3.3. Проверка правильности зависимого свойства
      • 309 9.3.4. Уведомления об изменении зависимого свойства
      • 310 9.3.5. Приведение тина данных значения зависимого свойства
    • 311 9.4. Шаблон освобождения Dispose
      • 313 9.4.1. Основной шаблон освобождения Basic Dispose
      • 318 9.4.2. Финализируемые типы
    • 322 9.5. Фабрики
    • 325 9.6. Поддержка LINQ
      • 326 9.6.1. Краткий обзор LINQ
      • 327 9.6.2. Способы реализации поддержки LINQ
      • 327 9.6.3. Поддержка LINQ через IEnumerable<T>
      • 328 9.6.4. Поддержка LINQ через IQueryable<T>
      • 329 9.6.5. Поддержка LINQ через шаблон запроса Query
    • 331 9.7. Шаблон дополнительных возможностей Optional Feature
    • 335 9.8. Моделирование ковариации
    • 340 9.9. Шаблон Template Method
    • 341 9.10. Тайм-аут (истечение времени ожидания)
    • 343 9.11. Читаемые XAML-типы
    • 345 9.12. И в заключение...
  • 347 А. Соглашения о стиле кодирования в С#
    • 348 А.1. Общие соглашения о стиле
      • 348 А.1.1. Использование скобок
      • 349 А.1.2. Использование пробелов
      • 350 А.1.3. Использование отступов
      • 350 А.1.4. Другое
    • 351 А.2. Соглашения об именах
    • 351 А.3. Комментарии
    • 352 А.4. Организация файлов
  • 355 Б Использование FxCop для проверки рекомендаций по разработке инфраструктур
    • 355 Б.1. Что такое FxCop
    • 356 Б.2. Развитие FxCop
    • 357 Б.3. Как это работает
    • 357 Б.4. Описание руководства по FxCop
      • 357 Б.4.1. Правила FxCop для рекомендаций по обозначениям
      • 366 Б.4.2. Правила FxCop для разработки типа
      • 369 Б.4.3. Правила FxCop по разработке членов
      • 375 Б.4.4. Правила FxCop для проектирования расширяемости
      • 375 Б.4.5. Правила FxCop для исключении
      • 378 Б.4.6. Правила FxCop по использованию инфраструктуры
      • 382 Б.4.7. Правила FxCop для шаблонов разработки Design Patterns
  • 385 В Пример спецификации API
    • 385 1. Требования
    • 386 2. Спецификации API
      • 386 2.1. Сценарии
      • 387 2.2. Разработка API
    • 388 3. Функциональные спецификации
  • 393 Глоссарий
  • 399 Список рекомендуемой литературы
  • 403 Предметный указатель

Инструкция как скачать книгу Кржиштоф Цвалина, Брэд Абрамс: Инфраструктура программных проектов. Соглашения, идиомы и шаблоны для многократно используемых библиотек .NET (+ CD-ROM) в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.
Инфраструктура программных проектов. Соглашения, идиомы и шаблоны для многократно используемых библиотек .NET (+ CD-ROM)
Рейтинг книги:
1 голос
950

Поиск книг:




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

Статистика: