Сообщений 20    Оценка 116        Оценить  
Система Orphus

Framework Design Guidelines 2nd edition

Авторы: Krzysztof Cwalina
Brad Abrams
Издательство: Addison-Wesley Professional, 2008
480 pages
ISBN: 0321545613
ISBN: 978-0321545619

Материал предоставил: Сергей Тепляков
Найти в магазинах

Аннотация

Содержание
Комментарии

Аннотация

Framework Design Guidelines, Second Edition, teaches developers the best practices for designing reusable libraries for the Microsoft .NET Framework. Expanded and updated for .NET 3.5, this book new edition focuses on the design issues that directly affect the programmability of a class library, specifically its publicly accessible APIs.

This book can improve the work of any .NET developer producing code that other developers will use. It includes copious annotations to the guidelines by 36 prominent architects and users of the .NET Framework, which provideproviding a lively discussion of the reasons for the guidelines as well as examples of when to break thosee guidelines.

Microsoft architects Krzysztof Cwalina and Brad Abrams teach framework design from the top down. From their long significant combined experience and deep insight, you will learn:

  • The general philosophy and fundamental principles of framework design
  • Naming guidelines for the various parts of a framework
  • Guidelines for the design and extending of types and members of types
  • Issues affecting, and guidelines that are important tofor ensuring,e extensibility
  • How (and how not) to design exceptions
  • Guidelines for–and examples of–common framework design patterns
  • Guidelines in this book come in four major forms: Do, Consider, Avoid, and Do not. These directives help focus attention on practices that should always be used, those that should generally be used, those that should rarely be used, and those that should never be used. In general, a Do guideline should almost always be followed, a Consider guideline should generally be followed, an Avoid guideline indicates that something is usually not a good idea, and a Do not guideline indicates something you should almost never do. Every guideline includes a discussion of its applicability, and most include a code example to help illuminate the dialogue.

    Содержание

    Figures
    Tables
    Foreword
    Foreword to the First Edition
    Preface
    Acknowledgments
    About the Authors
    About the Annotators
    Chapter 1: Introduction
    1.1: Qualities of a Well-Designed Framework

    Chapter 2: Framework Design Fundamentals
    2.1: Progressive Frameworks
    2.2: Fundamental Principles of Framework Design

    Chapter 3: Naming Guidelines
    3.1: Capitalization Conventions
    3.2: General Naming Conventions
    3.3: Names of Assemblies and DLLs
    3.4: Names of Namespaces
    3.5: Names of Classes, Structs, and Interfaces
    3.6: Names of Type Members
    3.7: Naming Parameters
    3.8: Naming Resources

    Chapter 4: Type Design Guidelines
    4.1: Types and Namespaces
    4.2: Choosing Between Class and Struct
    4.3: Choosing Between Class and Interface
    4.4: Abstract Class Design
    4.5: Static Class Design
    4.6: Interface Design
    4.7: Struct Design
    4.8: Enum Design
    4.9: Nested Types
    4.10: Types and Assembly Metadata

    Chapter 5: Member Design
    5.1: General Member Design Guidelines
    5.2: Property Design
    5.3: Constructor Design
    5.4: Event Design
    5.5: Field Design
    5.6: Extension Methods
    5.7: Operator Overloads
    5.8: Parameter Design

    Chapter 6: Designing for Extensibility
    6.1: Extensibility Mechanisms
    6.2: Base Classes
    6.3: Sealing

    Chapter 7: Exceptions
    7.1: Exception Throwing
    7.2: Choosing the Right Type of Exception to Throw
    7.3: Using Standard Exception Types
    7.4: Designing Custom Exceptions
    7.5: Exceptions and Performance

    Chapter 8: Usage Guidelines
    8.1: Arrays
    8.2: Attributes
    8.3: Collections
    8.4: DateTime and DateTimeOffset
    8.5: ICloneable
    8.6: IComparable<T> and IEquatable<T>
    8.7: IDisposable
    8.8: Nullable<T>
    8.9: Object
    8.10: Serialization
    8.11: Uri
    8.12: System.Xml Usage
    8.13: Equality Operators

    Chapter 9: Common Design Patterns
    9.1: Aggregate Components
    9.2: The Async Patterns
    9.3: Dependency Properties
    9.4: Dispose Pattern
    9.5: Factories
    9.6: LINQ Support
    9.7: Optional Feature Pattern
    9.8: Simulating Covariance
    9.9: Template Method
    9.10: Timeouts
    9.11: XAML Readable Types
    9.12: And in the End...

    Appendix A: C# Coding Style Conventions
    A.1: General Style Conventions
    A.2: Naming Conventions
    A.3: Comments
    A.4: File Organization

    Appendix B: Using FxCop to Enforce the Framework Design Guidelines
    B.1: What Is FxCop?
    B.2: The Evolution of FxCop
    B.3: How Does It Work?
    B.4: FxCop Guideline Coverage

    Appendix C: Sample API Specification
    Glossary
    Suggested Reading List
    Index

    Комментарии

    Сергей Тепляков

    Одним из главных достоинств объектно-ориентированного программирования является возможность повторного использования кода. Выполняя один проект за другим, команда разработчиков накапливает опыт в предметной области и обрастает различными вспомогательными классами, облегчающими решения повседневных задач. И даже, когда код повторно используется всего в нескольких местах, разработчики понимают, что к такому коду предъявляются уже совсем другие требования. Если при разработке приложений основной акцент делается на простоту сопровождения внутренней реализации, то при разработке библиотек он смещается в сторону простоты и удобства использования, даже за счет пренебрежения некоторыми идеями объектно-ориентированного проектирования. Кроме этого, разработка библиотек требует от команды разработчиков совершенно другого подхода ко всему циклу разработки, начиная от анализа требований и составления функциональной спецификации, заканчивая комплексным тестированием. Книга содержит множество правил, рекомендации и предостережений, которые нужно учитывать при создании библиотек, а аннотации таких известных людей, как Джеффри Рихтер, Крис Селлз, Андерс Хейлсберг, Герб Саттер и других, придают некоторую живость обсуждению и помогают лучше понять то, или иное правило.

    "Пожалуйста, не придумывайте ничего нового при проектировании библиотек. Создавайте интерфейс своих библиотек настолько неинтересными насколько это возможно. Интересной должна быть функциональность библиотек, а не ее интерфейс"

    Chris Sells

    Помимо очевидной пользы всем, кто занят в разработке повторно-используемых компонентов, книга будет полезна и простым разработчикам. Важно понимать, что каждый язык или среда разработки обладает собственной субкульторой, следовать которой нужно не только при разработке крупных библиотек, но и при разработке приложений. Согласованное именование, применение устойчивых шаблонов и идиом во всех ваших проектах позволит значительно упростить реализацию и последующее сопровождение. Авторы касаются множества различных вопросов, таких как выбор между свойствами и методами, между базовыми классами и интерфейсами, событиями и методами обратного вызова, рассказывают о проблеме изменения значимых типов и о выборе между разными типами сериализации. Отдельно стоит отметить замечательную главу об исключениях. Хотя этой теме уделяется достаточное внимание в литературе, исключения остаются одной из наиболее сложных и малопонятных тем для большинства разработчиков.

    "Издатели говорят, что количество проданных копий книги обратно пропорционально количеству формул в ней. Для разработчика библиотек версия этого закона следующая: количество пользователей, которые будут использовать вашу библиотеку обратно пропорционально количеству операторов new, необходимых в простых сценариях использования"

    Krzysztof Cwalina

    Книга будет полезна любой команде разработчиков на платформе .Net, не зависимо от опыта и сложности решаемых задач. Даже если в вашей команде есть опытный гуру-разработчик, который знает все эти правила на зубок, книга может послужить хорошим учителем для менее опытных разработчиков. Книга может непосредственно использоваться в качестве корпоративного стандарта разработки или послужить основой для ее создания, а при наличии таких инструментов, как FxCop, эти стандарты могут автоматически проверяться у всех участников проектной команды.

    Оценка: Must Have.

        Сообщений 20    Оценка 116        Оценить