Framework Design Guidelines: Conventions, Idioms, and Patterns for Reuseable .NET Libraries, 2nd Edition View Larger Image | Krzysztof Cwalina, Brad Abrams Addison-Wesley, Hardcover, 2nd Bk&DVD edition, Published October 2008, 496 pages, ISBN 0321545613 | List Price: $49.99 Our Price: $38.95 You Save: $11.04 (22% Off)
| | | Availability: Out-Of-Stock |
Be the First to Write a Review and tell the world about this title!People who purchase this book frequently purchase: - More Effective C#: 50 Specific Ways to Improve Your C#; Bill Wagner, $28.50, 37% Off!
- Programming WCF Services, 2nd Edition; Juval Lowy, $27.25, 45% Off!
- The C# Programming Language, 3rd Edition; Anders Hejlsberg, et al, $28.95, 36% Off!
- WPF Recipes in C# 2008: A Problem-Solution Approach; Allen Jones, et al, $33.50, 39% Off!
Books on similar topics, in best-seller order:Books from the same publisher, in best-seller order:
Framework Design Guidelines is one of those rare books that can be read
at different reading levels and can be useful to different kinds of developers.
Regardless of whether you want to design an effective object model, improve
your understanding of the .NET Framework, borrow from the experience of software
gurus, stay clear of the most common programming mistakes, or just get an idea
of the huge effort that led to the .NET initiative, this book is a must-read.
Francesco Balena, The VB Migration Partner Team (www.vbmigration.com),
Code Architect, Author, and Microsoft Regional Director, Italy
Frameworks are valuable but notoriously difficult to construct: your
every decision must be geared toward making them easy to be used correctly and
difficult to be used incorrectly. This book takes you through a progression
of recommendations that will eliminate many of those downstream I wish
Id known that earlier moments. I wish Id read it earlier.
Paul Besly, Principal Technologist, QA
Not since Brooks The Mythical Man Month has the major software
maker of its time produced a book so full of relevant advice for the modern
software developer. This book has a permanent place on my bookshelf and I consult
it frequently.
George Byrkit, Senior Software Engineer, Genomic Solutions
Updated for the new language features of the .NET Framework 3.0 and
3.5, this book continues to be the definitive resource for .NET developers and
architects who are designing class library frameworks. Some of the existing
guidelines have been expanded with new annotations and more detail, and new
guidance covering such features as extension methods and nullable types has
also been included. The guidance will help any developer write clearer and more
understandable code, while the annotations provide invaluable insight into some
of the design decisions that made the .NET Framework what it is today.
Scott Dorman, Microsoft MVP and President, Tampa Bay International Association
of Software Architects
Filled with information useful to developers and architects of all levels,
this book provides practical guidelines and expert background information to
get behind the rules. Framework Design Guidelines takes the already published
guidelines to a higher level, and it is needed to write applications that integrate
well in the .NET area.
Cristof Falk, Software Engineer
This book is an absolute must read for all .NET developers. It gives
clear do and dont guidance on how to design class
libraries for .NET. It also offers insight into the design and creation of .NET
that really helps developers understand the reasons why things are the way they
are. This information will aid developers designing their own class libraries
and will also allow them to take advantage of the .NET class library more effectively.
Jeffrey Richter, Author/Trainer/Consultant, Wintellect
The second edition of Framework Design Guidelines gives you new, important
insight into designing your own class libraries: Abrams and Cwalina frankly
discuss the challenges of adding new features to shipping versions of their
products with minimal impact on existing code. Youll find great examples
of how to create version N+1 of your software by learning how the .NET class
library team
created versions 2.0, 3.0, and 3.5 of the .NET library. They were able to add
generics, WCF, WPF, WF, and LINQ with minimal impact on the existing APIs, even
providing capabilities for customers wanting to use only some of the new features,
while still maintaining compatibility with the original library.
Bill Wagner, Founder and Consultant, SRT Solutions, author of Effective
C# and More Effective C#
This book is a must read for all architects and software developers
thinking about frameworks. The book offers insight into some driving factors
behind the design of the .NET Framework. It should be considered mandatory reading
for anybody tasked with creating application frameworks.
Peter Winkler, Sr. Software Engineer, Balance Technology Inc.
An instant classic.
From the Foreword by Miguel de Icaza
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 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 thirty-five
prominent architects and practitioners of the .NET Framework, providing a lively
discussion of the reasons for the guidelines as well as examples of when to
break those guidelines.
Microsoft architects Krzysztof Cwalina and Brad Abrams teach framework design
from the top down. From their 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 affectingand guidelines for ensuringextensibility
How (and how not) to design exceptions
Guidelines forand examples ofcommon framework design patterns
Guidelines in this book are presented 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. Every guideline includes a discussion of
its applicability, and most include a code example to help illuminate the dialogue.
Framework Design Guidelines, Second Edition, is the only definitive source
of best practices for managed code API development, direct from the architects
themselves.
A companion DVD includes the Designing .NET Class Libraries video series, instructional
presentations by the authors on design guidelines for developing classes and
components that extend the .NET Framework. A sample API specification and other
useful resources and tools are also included.
Table of Contents
Figures xvii
Tables xix
Foreword xxi
Foreword to the First Edition xxiii
Preface xxv
Acknowledgments xxxi
About the Authors xxxiii
About the Annotators xxxv
Chapter 1: Introduction 1
1.1: Qualities of a Well-Designed Framework 3
Chapter 2: Framework Design Fundamentals 9
2.1: Progressive Frameworks 11
2.2: Fundamental Principles of Framework Design 14
Chapter 3: Naming Guidelines 37
3.1: Capitalization Conventions 38
3.2: General Naming Conventions 46
3.3: Names of Assemblies and DLLs 54
3.4: Names of Namespaces 56
3.5: Names of Classes, Structs, and Interfaces 60
3.6: Names of Type Members 68
3.7: Naming Parameters 73
3.8: Naming Resources 74
Chapter 4: Type Design Guidelines 77
4.1: Types and Namespaces 79
4.2: Choosing Between Class and Struct 84
4.3: Choosing Between Class and Interface 88
4.4: Abstract Class Design 95
4.5: Static Class Design 97
4.6: Interface Design 98
4.7: Struct Design 101
4.8: Enum Design 103
4.9: Nested Types 115
4.10: Types and Assembly Metadata 118
Chapter 5: Member Design 121
5.1: General Member Design Guidelines 121
5.2: Property Design 138
5.3: Constructor Design 144
5.4: Event Design 153
5.5: Field Design 159
5.6: Extension Methods 162
5.7: Operator Overloads 168
5.8: Parameter Design 175
Chapter 6: Designing for Extensibility 193
6.1: Extensibility Mechanisms 193
6.2: Base Classes 206
6.3: Sealing 207
Chapter 7: Exceptions 211
7.1: Exception Throwing 216
7.2: Choosing the Right Type of Exception to Throw 221
7.3: Using Standard Exception Types 234
7.4: Designing Custom Exceptions 239
7.5: Exceptions and Performance 240
Chapter 8: Usage Guidelines 245
8.1: Arrays 245
8.2: Attributes 247
8.3: Collections 250
8.4: DateTime and DateTimeOffset 261
8.5: ICloneable 263
8.6: IComparable<T> and IEquatable<T> 264
8.7: IDisposable 266
8.8: Nullable<T> 266
8.9: Object 268
8.10: Serialization 274
8.11: Uri 283
8.12: System.Xml Usage 284
8.13: Equality Operators 286
Chapter 9: Common Design Patterns 289
9.1: Aggregate Components 289
9.2: The Async Patterns 298
9.3: Dependency Properties 312
9.4: Dispose Pattern 319
9.5: Factories 332
9.6: LINQ Support 337
9.7: Optional Feature Pattern 344
9.8: Simulating Covariance 348
9.9: Template Method 354
9.10: Timeouts 356
9.11: XAML Readable Types 358
9.12: And in the End... 361
Appendix A: C# Coding Style Conventions 363
A.1: General Style Conventions 364
A.2: Naming Conventions 367
A.3: Comments 368
A.4: File Organization 369
Appendix B: Using FxCop to Enforce the Framework Design Guidelines 371
B.1: What Is FxCop? 371
B.2: The Evolution of FxCop 372
B.3: How Does It Work? 373
B.4: FxCop Guideline Coverage 374
Appendix C: Sample API Specification 405
Glossary 413
Suggested Reading List 419
Index 423
|