The Pre-Loved edit from Shopbop
Add Prime to get Fast, Free delivery
Amazon prime logo
Buy new:
-59% $20.74
FREE delivery Monday, December 2 on orders shipped by Amazon over $35
Ships from: Amazon
Sold by: Premium Books Now
$20.74 with 59 percent savings
List Price: $49.99
Get Fast, Free Shipping with Amazon Prime FREE Returns
FREE delivery Monday, December 2 on orders shipped by Amazon over $35
Or fastest delivery Sunday, December 1. Order within 8 hrs 1 min
Only 1 left in stock - order soon.
$$20.74 () Includes selected options. Includes initial monthly payment and selected options. Details
Price
Subtotal
$$20.74
Subtotal
Initial payment breakdown
Shipping cost, delivery date, and order total (including tax) shown at checkout.
Ships from
Amazon
Ships from
Amazon
Returns
Returnable until Jan 31, 2025
Returnable until Jan 31, 2025
For the 2024 holiday season, eligible items purchased between November 1 and December 31, 2024 can be returned until January 31, 2025.
Returns
Returnable until Jan 31, 2025
For the 2024 holiday season, eligible items purchased between November 1 and December 31, 2024 can be returned until January 31, 2025.
Payment
Secure transaction
Your transaction is secure
We work hard to protect your security and privacy. Our payment security system encrypts your information during transmission. We don’t share your credit card details with third-party sellers, and we don’t sell your information to others. Learn more
Payment
Secure transaction
We work hard to protect your security and privacy. Our payment security system encrypts your information during transmission. We don’t share your credit card details with third-party sellers, and we don’t sell your information to others. Learn more
$13.00
Get Fast, Free Shipping with Amazon Prime FREE Returns
This item shows wear including CD included or Access Code is unopened and some highlighting or writing. This item shows wear including CD included or Access Code is unopened and some highlighting or writing. See less
FREE delivery Monday, December 2 on orders shipped by Amazon over $35
Or Prime members get FREE delivery Friday, November 29. Order within 6 hrs 16 mins.
Only 1 left in stock - order soon.
$$20.74 () Includes selected options. Includes initial monthly payment and selected options. Details
Price
Subtotal
$$20.74
Subtotal
Initial payment breakdown
Shipping cost, delivery date, and order total (including tax) shown at checkout.
Access codes and supplements are not guaranteed with used items.
Kindle app logo image

Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required.

Read instantly on your browser with Kindle for Web.

Using your mobile phone camera - scan the code below and download the Kindle app.

QR code to download the Kindle App

Follow the authors

Something went wrong. Please try your request again later.

Framework Design Guidelines: Conventions, Idioms, And Patterns for Reusable .net Libraries Har/Dvdr Edition

4.6 4.6 out of 5 stars 38 ratings

{"desktop_buybox_group_1":[{"displayPrice":"$20.74","priceAmount":20.74,"currencySymbol":"$","integerValue":"20","decimalSeparator":".","fractionalValue":"74","symbolPosition":"left","hasSpace":false,"showFractionalPartIfEmpty":true,"offerListingId":"jqLgWMZYo%2Fj3I8p5mMNgNVLJJhye7XHflvCwFwobKg20gR4WUcnyJv0ok%2FMs389Tibj%2FWXUzeicKG8uS4XQGAjcE9bu6PbhQP2DtUYAuTTqpsv7NqfwPYDg5rwO44dfMACYPLPSWeC1IN08s%2FvdfRVKRGvOr%2BPs%2FfR27I08FUE3rVCvGCxaIgaiGPN4KzUHZ","locale":"en-US","buyingOptionType":"NEW","aapiBuyingOptionIndex":0}, {"displayPrice":"$13.00","priceAmount":13.00,"currencySymbol":"$","integerValue":"13","decimalSeparator":".","fractionalValue":"00","symbolPosition":"left","hasSpace":false,"showFractionalPartIfEmpty":true,"offerListingId":"jqLgWMZYo%2Fj3I8p5mMNgNVLJJhye7XHfvD30MrJ3rm8wjvBlUOE70746AxHa5pReHKhioSq%2BRYrhM0xuPdrksFSgigSPVIZP1V71p91dsVtXNzfXK7Nk8JydJQYFvdXX4KSOaw7owKYw5xFf7kZorzJIkVGdUGstid5o66Fsu91zv1XYNNAqMA8THF%2BDGBJF","locale":"en-US","buyingOptionType":"USED","aapiBuyingOptionIndex":1}]}

Purchase options and add-ons

A new edition of this title is available, ISBN-10: 0321545613 ISBN-13: 9780321545619

"This book is an absolute must-read for all .NET developers. It gives clear do and don't 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

"Framework Design Guidelines will help you in two important ways. First, any .NET developer will benefit from a greater understanding of the design principles that govern the .NET Base Class Library. Second, a deeper understanding of these principles will help you to create software that integrates well with the .NET environment. Quite frankly, this book should be on every .NET developer's bookshelf."

--Bill Wagner, founder and consultant, SRT Solutions, author of Effective C#

"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

"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, senior software engineer, Balance Technology Inc.

"Frameworks are valuable but notoriously difficult to construct: Your every decision must be geared towards 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 I'd known that earlier' moments. I wish I'd read it earlier."

--Paul Besly, principal technologist, QA

"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

Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries teaches developers the best practices for designing system frameworks and reusable libraries for use with the Microsoft .NET Framework and WinFX. This book focuses on the design issues that directly affect the programmability of a framework, specifically its publicly accessible APIs.

This book can improve the work of any .NET developer producing code that other developers will use. An added benefit is a collection of annotations to the guidelines by various members of the Microsoft .NET Framework and WinFX teams, which provide a lively discussion of the motives behind the guidelines, along with examples of good reasons for breaking the guidelines.

Microsoft architects Krzysztof Cwalina and Brad Abrams offer guidelines for framework design from the top down. From their long experience and deep insight, you will learn

  • The general philosophy of framework design
  • Principles and guidelines that are fundamental to overall framework design
  • Naming guidelines for the various parts of a framework, such as namespaces, types, and members
  • Guidelines for the design of types and members of types
  • Issues and guidelines that are important to ensure appropriate extensibilityin your framework
  • Guidelines for working with exceptions, the preferred error reporting mechanism in the .NET Framework and WinFX
  • Guidelines for extending and using types that commonly appear in frameworks
  • Guidelines for and examples of common framework design patterns

Guidelines in this book come in four major forms: Do, Consider, Avoid, and Do not. In general, a Do guideline should almost always be followed, a Consider guideline should generally be followed, an Avoid guideline indicates that something is generally 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 guidelines include a code example.

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 are also included.




Amazon First Reads | Editors' picks at exclusive prices

Editorial Reviews

About the Author

Krzysztof Cwalina is a Program Manager on the Common Language Runtime team at Microsoft Corporation. He began his career at Microsoft designing APIs for the first release of the .NET Framework. He has been responsible for several namespaces in the Framework, including System.Collections, System.Diagnostics, System.Messaging, and others. He was also one of the original members of the FxCop team. Currently, he is leading a companywide effort to develop, promote, and apply the design guidelines to the .NET Framework and WinFX. Krzysztof graduated with a B.S. and an M.S. in computer science from the University of Iowa.

Brad Abrams was a founding member of both the Common Language Runtime and .NET Framework teams at Microsoft, where he is currently a Lead Program Manager. Brad has been involved with WinFX and Windows Vista efforts from the beginning. His primary role is to ensure consistency and developer productivity of the .NET Framework through Vista and beyond. His popular blog can be found at http://blogs.msdn.com/BradA/.



Excerpt. © Reprinted by permission. All rights reserved.

This book, Framework Design Guidelines, presents best practices for designing frameworks, which are reusable object-oriented libraries. The guidelines are applicable to frameworks ranging in size and in their scale of reuse:

  • Large system frameworks, such as the .NET Framework, usually consisting of thousands of types and used by millions of developers.
  • Medium-size reusable layers of large distributed applications
  • or extensions to system frameworks, such as the Web Services
  • Enhancements.
  • Small components shared among several applications; for example, a grid control library.

It is worth noting that this book focuses on design issues that directly affect the programmability of a framework (publicly accessible APIs). As a result, we generally do not cover much in terms of implementation details. Just like a user interface design book doesn't cover the details of how to implement hit testing, this book does not describe how to implement a binary sort, for example. This scope allows us to provide a definitive guide for framework designers instead of being yet another book about programming.

These guidelines were created in the early days of .NET Framework development. They started as a small set of naming and design conventions but have been enhanced, scrutinized, and refined to a point where they are generally considered the canonical way to design frameworks at Microsoft. They carry the experience and cumulative wisdom of thousands of developer hours over three versions of the .NET Framework. We tried to avoid basing the text purely on some idealistic design philosophies, and we think its day-to-day use by development teams at Microsoft has made it an intensely pragmatic book.

The book contains many annotations that explain trade-offs, explain history, amplify, or provide critiquing views on the guidelines. These annotations are written by experienced framework designers, industry experts, and users. They are the stories from the trenches that add color and setting for many of the guidelines presented.

To make them more easily distinguished in text, namespace names, classes, interfaces, methods, properties, and types are set in monospace font. The book assumes basic familiarity with .NET Framework programming. A few guidelines assume familiarity with features introduced in version 2.0 of the Framework. If you are looking for a good introduction to Framework programming, there are some excellent suggestions in the Suggested Reading List at the end of the book.

Guideline Presentation

The guidelines are organized as simple recommendations using Do, Consider, Avoid, and Do not. Each guideline describes either a good or bad practice and all have a consistent presentation. Good practices have a check mark in front of them, and bad practices have an X in front of them. The wording of each guideline also indicates how strong the recommendation is. For example, a Do guideline is one that should always1 be followed (all examples are from this book):

DO name custom attribute classes with the suffix "Attribute."

public class ObsoleteAttribute : Attribute { ... }

On the other hand, Consider guidelines should generally be followed, but if you fully understand the reasoning behind a guideline and have a good reason to not follow it anyway, you should not feel bad about breaking the rules:

CONSIDER defining a struct instead of a class if instances of the type are small and commonly short-lived or are commonly embedded in other objects.

Similarly, Do not guidelines indicate something you should almost never do:

DO NOT assign instances of mutable types to read-only fields.

Less strong, Avoid guidelines indicate that something is generally not a good idea, but there are known cases where breaking the rule makes sense:

AVOID using ICollection or ICollection as a parameter just to access the Count property.

Some more complex guidelines are followed with additional background information, illustrative code samples, and rationale:

DO implement IEquatable on value types. The Object.Equals method on value types causes boxing and its default implementation is not very efficient because it uses reflection. IEquatable.Equals can offer much better performance and can be implemented so it does not cause boxing.

public struct Int32 : IEquatable {
public bool Equals(Int32 other){ ... }
}

Language Choice and Code Examples

One of the goals of the Common Language Runtime is to support a variety of programming languages: those provided by Microsoft, such as C++, VB, and C#, as well as third-party languages such as Eiffel, COBOL, Python, and others. Therefore, this book was written to be applicable to a broad set of languages that can be used to develop and consume modern frameworks. To reinforce the message of multilanguage framework design, we considered writing code examples using several different programming languages. However, we decided against this. We felt that using different languages would help to carry the philosophical message, but it could force readers to learn several new languages, which is not the objective of this book.

We decided to choose a single language that is most likely to be readable to the broadest range of developers. We picked C#, because it is a simple language from the C family of languages (C, C++, Java, and C#), a family with a rich history in framework development.

Choice of language is close to the hearts of many developers, and we offer apologies to those who are uncomfortable with our choice.

About This Book

This book offers guidelines for framework design from the top down.

Chapter 1 is a brief introduction to the book, describing the general philosophy of framework design. This is the only chapter without guidelines.

Chapter 2, "Framework Design Fundamentals," offers principles and guidelines that are fundamental to overall framework design.

Chapter 3, "Naming Guidelines," contains naming guidelines for various parts of a framework, such as namespaces, types, members, and common design idioms.

Chapter 4, "Type Design Guidelines," provides guidelines for the general design of types.

Chapter 5,"Member Design," takes it a step further and presents guidelines for the design of members of types. Chapter 6, "Designing for Extensibility," presents issues and guidelines that are important to ensure appropriate extensibility in your framework.

Chapter 7, "Exceptions," presents guidelines for working with exceptions, the preferred error reporting mechanisms.

Chapter 8, "Usage Guidelines," contains guidelines for extending and using types that commonly appear in frameworks.

Chapter 9, "Common Design Patterns," offers guidelines and examples of common framework design patterns.

Appendix A contains a short description of coding conventions used in this book. Appendix B describes a tool called FxCop. The tool can be used to analyze framework binaries for compliance with the guidelines described in this book. A link to the tool is included on the DVD that accompanies this book.

Appendix C is an example of an API specification that framework designers within Microsoft create when designing APIs.

Included with the book is a DVD that contains several hours of video presentations covering topics presented in this book by the authors, a sample API specification, and other useful resources.

1.Always might be a bit too strong a word. There are guidelines that should literally be always followed, but they are extremely rare. On the other hand, you probably need to have a really unusual case for breaking a "Do" guideline and still have it be beneficial to the users of the framework.

Product details

  • Publisher ‏ : ‎ Addison-Wesley Professional; Har/Dvdr edition (January 1, 2005)
  • Language ‏ : ‎ English
  • Hardcover ‏ : ‎ 346 pages
  • ISBN-10 ‏ : ‎ 0321246756
  • ISBN-13 ‏ : ‎ 978-0321246752
  • Item Weight ‏ : ‎ 2.18 pounds
  • Dimensions ‏ : ‎ 7.25 x 1.5 x 9.5 inches
  • Customer Reviews:
    4.6 4.6 out of 5 stars 38 ratings

About the authors

Follow authors to get new release updates, plus improved recommendations.

Customer reviews

4.6 out of 5 stars
38 global ratings

Top reviews from the United States

Reviewed in the United States on August 7, 2007
I don't personally think that all developers will find this book useful. In fact, I have a feeling that some may find it highly useless and disruptive as it is abstract in a sense (one must apply the lessons to each library and scenario independently, taking into consideration many different aspects of usability and readability) and it does require some "retraining" of bad practices which have been long since ingrained due to years of usage.

But whether this book deserves a five star rating or a one star rating - whether this book is for you - can be answered by asking yourself the following question: are you obsessed with quality? Quality in the sense of creating a library that is:

- Easily reused by others, even first timers encountering the library or even first timers to .Net
- Well thought out with well designed classes
- Consistent within itself and consistent with the base libraries from Microsoft

The importance of the little things like naming classes, properties, methods, using one type of construct over another, using one type of accessor over another, etc. cannot be stressed enough in the overall picture of creating a library to a higher standard of quality, usability, and extensibility.

As Confucius is to have said:

"If names be not correct, language is not in accordance with the truth of things. If language be not in accordance with the truth of things, affairs cannot be carried on to success.

"When affairs cannot be carried on to success, proprieties and music do not flourish. When proprieties and music do not flourish, punishments will not be properly awarded. When punishments are not properly awarded, the people do not know how to move hand or foot.

"Therefore a superior man considers it necessary that the names he uses may be spoken appropriately, and also that what he speaks may be carried out appropriately. What the superior man requires is just that in his words there may be nothing incorrect."

As I wrote in an e-mail to my team, I think that digesting this book will lead to: higher quality public facing APIs for our customer development teams seeking to extend the functionality, increased readability and more consistency internally in our teams, increased usability and decreased maintenance costs for the support teams as well as new developers on our team, and of course, increased skill, knowledge, and competency as developers of each of the team members.
5 people found this helpful
Report
Reviewed in the United States on August 10, 2014
This is an old book and some of the recommendations are now not recommended but I still found it a valuable resource when I recently had to write a Guidelines and Best Practices document for a new project that I will be leading. What I found the most valuable was the different opinions that were supplied by reviewers that the author(s) included in the book. The book covers just about every topic in detail and not only says what to do, but explains why. The why makes this book worth every penny. I wish they would release an updated version of this book.
2 people found this helpful
Report
Reviewed in the United States on March 8, 2006
Framework Design Guidelines offers a wealth of information that is presented in a format that is easy to understand and offers insights from various developers at Microsoft. Comment boxes are sprinkled throughout the book, written by Microsoft .NET team members and other expert developers in .NET. Sometime one, but often two, three of four comments will follow a core concept in the book. They offer up insights, criticisms and great real-world examples of how the design guidelines have helped the .NET, and where ignore them hurt .NET. To me, this communication directly from the actual developers who wrote numerous classes in the 1.0, 1.1 and 2.0 releases is great. And sometimes they will disagree on a point, which really provides insights into when and how you should follow the guidelines.

I am already starting to present ideas from this book to my team at work. This will influence our next product release in a very good way.
3 people found this helpful
Report
Reviewed in the United States on October 20, 2005
There is only one part of the book that I wasn't completely satisfied with: the coding style conventions. Why? Because I try to follow these kinds of suggested standards, but these are not the default settings in Visual Studio! Who makes this stuff up by the way? No spaces between arguments??? C'mon. Also, I'll "raise" an event, but I won't throw an exception if someone says "fire" an event. Let it go. :-)

That being said...This is a great read for anyone who writes classes in .NET at all even though the objective is writing public APIs. If everyone designed this way, we'd all be a bunch of happy .NET developers.
3 people found this helpful
Report
Reviewed in the United States on May 6, 2006
This is an extremely valuable multi-faceted discussion of how to name your classes and methods -- and how to structure your interfaces for ease of use and evolution over time.

The authors are thoughtful and clear in their reasoning and highlight their own "lessons learned" with real examples of shipped code that in retrospect could have been done better.
2 people found this helpful
Report
Reviewed in the United States on August 7, 2013
I used this book to help build out the architecture for a few applications. I found it valuable and helpful.
Reviewed in the United States on January 20, 2009
I think this is a must read for every developer (beginner or expert) to follow patterns and guidelines in all projects, irrespective of technology being used for programming - This book is specific for .NET only - I love it!
Reviewed in the United States on August 6, 2015
for the time it was awesome, but this information is now free at msdn.com. Dont' buy it.

Top reviews from other countries

Translate all reviews to English
Tyler
5.0 out of 5 stars Eines der nützlichsten und zeitlosesten...
Reviewed in Germany on February 26, 2021
Auch wenn das Buch schon etwas älter ist und das .NET Framework sich grundlegend weiterentwickelt hat, finde ich das Buch und die Ideen die in dem Buch vermittelt werden vergleichsweise zeitlos und überaus nützlich um sich mit dem Thema API und Framework Design auseinander zu setzen.
Wenn man das Prinzip und die Ideen und Überlegungen die hier vermittelt werden anschaut und verstanden hat, kann man diese meiner Ansicht nach auch relativ einfach auf andere Programmiersprachen und Frameworks anwenden. Alleine das Thema Naming-Conventions wird oft sehr unterschätzt aber ist meist mit einer der hilfreichsten Grundlage für eine Dokumentation + die schnelle und intuitive Nutzung eines Frameworks. Somit ist es aus meiner Sicht grundlegend mit für die User Experience bei der Nutzung eines Frameworks ausschlaggebend.
Während ich andere Bücher längst aussortiert haben werden, wird dieses Buch mich noch eine sehr lange Zeit begleiten und ich werde es auch immer als Grundlage weiterempfehlen.
Merlin
5.0 out of 5 stars très intéressant
Reviewed in France on October 5, 2014
Beaucoup de bon conseil pour développer une grosse librairie, peu dogmatique, rien que du bon sens. A conseillé aux débutants comme aux pros
コゲヲ
5.0 out of 5 stars .NET のライブラリ/フレームワーク開発の前に
Reviewed in Japan on April 3, 2007
.NET Framework 開発者たちの手によるフレームワーク開発のノウハウ本です。名前空間/クラス/メンバ/インターフェースを設計する際のガイドラインや名前付け規約に始まり、使いづらい(あるいは落とし穴のある)フレームワークにならないように実装上注意する点などを幅広く取り上げています。

ライブラリなどの開発経験者は既に無意識のうちに実行しているような方法論も多く含まれていますが、改めて例を交えて(開発者たちが直面した具体例と解決方法が頻繁に囲み記事として挿入されます)解説されることで、これまでの経験が体系化されたという意味で有用でした。興味のあるチャプターだけ拾い読みするのもよいでしょうし、個人的には囲み記事で取り上げられる過去の具体例を読み物として楽しみました。

非 .NET Framework でライブラリなどを開発してきた人が .NET Framework 向けのライブラリ開発に取りかかる際には一読をお勧めします。あと、チーム開発時にプログラミング規約を設けるためのリファレンスとして役に立ちます。ちなみに .NET Framework の初心者やプログラミング自体初めて、という人にはまったく向いていません。
Andre Asano
4.0 out of 5 stars Some dirt and drawings but good stats
Reviewed in Canada on November 11, 2018
The book is used. It has some dirt on the cover and some drawings on the back cover but overall it's in a good shape.
Customer image
Andre Asano
4.0 out of 5 stars Some dirt and drawings but good stats
Reviewed in Canada on November 11, 2018
The book is used. It has some dirt on the cover and some drawings on the back cover but overall it's in a good shape.
Images in this review
Customer image Customer image
Customer imageCustomer image
Horst Borksch
4.0 out of 5 stars Alt aber für Grundlagen gut - und günstig
Reviewed in Germany on May 24, 2017
Leider schon etwas veraltet, aber da es sehr günstig zu erhalten ist, lohnt sich auch diese ältere Version. Die grundlegenden Regeln zur Erstellung von Frameworks bestehen immernoch, und die Geschichten um Fehler und Erfahrungen aus der Entstehung des .Net-Frameworks sind immernoch gute Ratschläge. Besonders gut ist, dass verschiedene Autoren in kleineren Meinungsspalten ihre Ansicht schildern können und auch kontroverse Meinungen akzeptieren.