Framework Design Guidelines : Conventions, Idioms, and Patterns for Reusable .NET Libraries (Microsoft Net Development Series)

  Author:    Krzysztof Cwalina, Brad Abrams
  ISBN:    0321246756
  Sales Rank:    48775
  Published:    2005-09-19
  Publisher:    Addison-Wesley Professional
  # Pages:    384
  Binding:    Hardcover
  Avg. Rating:    5.0 based on 29 reviews
  Used Offers:    9 from $34.00
  Amazon Price:    $34.63
  (Data above last updated:  2008-08-21 04:30:10 EST)
  
  
Sort customer reviews by:
  
Show All Reviews on Page      Hide All Reviews on Page
   
  
Framework Design Guidelines : Conventions, Idioms, and Patterns for Reusable .NET Libraries (Microsoft Net Development Series)
  

In the past, reusable API design was the domain of only a handful of large

software vendors. There has been a steady increase in interest in API design

after the invention and widespread adoption of reusable component

technologies: COM, CORBA, and recently .NET. Today, most new software

projects contain some reusable APIs. Microsoft is giving the message that

careful design of public APIs is crucial to realizing the full potential of software

reuse. These .NET Framework Design Guidelines were created in the early

days of the development of .NET. 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 .NET. The authors avoid having the

text based purely on some idealistic design philosophies, and have made it an

intensely pragmatic book. The book contains many annotations that explain

tradeoffs, history, amplify or provide critiquing views on the guidelines. The

book is written to version 2.0 of .NET, and will be the basis for one of the preconference

sessions for PDC in September, where the book will be launched.

                  Reader Reviews 1 - 35 of 35                 
  
  
Review
Date
Review
Rating(5 High)
Review
Helpful
to:
Customer Review Reviewer
Info
Permanent
Link
Reader Reviews Below Sorted by Newest First
05-13-08 5 (NA)
(Hide Review...)  Good ideas for a Framework designer
Reviewer Permalink
Very well organized, and good content.
Id like to see more diagrams or so, so we can se how they decide to build the things... but it still is great.
(Review Data Last Updated: 2008-08-20 04:25:00 EST)
10-25-07 5 (NA)
(Hide Review...)  One of the best on the subject
Reviewer Permalink
I think this is one of the best books on this subject that I have read so far- very practical, very useful. There is a lot of information, real-life examples and experience from the .NET framework design team.
(Review Data Last Updated: 2008-05-20 05:46:15 EST)
08-09-07 5 (NA)
(Hide Review...)  Simply the best
Reviewer Permalink
As a professional I have worked many times on building re-usable and extensible frameworks. Therefore, I had to read several books in order to make sure that the framework I was building was doing what it was supposed to do. However, in all these years I had never the luck to get a complete guide of "building a framework the right way" and I had to always put together pieces from different articles in order to make my own guide. Well, there you have it! Buy this book, read it and you will have a complete guide of how to do things the right way. Another great thing about this book is that different professionals make their comments about almost every guideline. As a result you are not only exposed to writer's view but also to the views and opinions of many well respected software professionals. Do buy this book and as hard as it might seem try to apply its recommendations to your daily development process.
(Review Data Last Updated: 2007-10-25 17:10:30 EST)
08-07-07 5 (NA)
(Hide Review...)  Passionate About Quality?
Reviewer Permalink
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.
(Review Data Last Updated: 2007-08-09 11:52:14 EST)
06-11-07 5 (NA)
(Hide Review...)  A must have for any C# Developer or Architect
Reviewer Permalink
If you need to write C#/.Net or even Java, this book is a must have.
(Review Data Last Updated: 2007-08-08 03:55:08 EST)
11-23-06 5 0\2
(Hide Review...)  Great book for framework programmers.
Reviewer Permalink
Since I do a lot of framework programming for .NET, this is a great book. In fact, I consider some of the conventions listed in this book to be good practice even when not using .NET.
(Review Data Last Updated: 2007-07-06 12:54:45 EST)
11-22-06 5 0\2
(Hide Review...)  Great book for framework programmers.
Reviewer Permalink
Since I do a lot of framework programming for .NET, this is a great book. In fact, I consider some of the conventions listed in this book to be good practice even when not using .NET.
(Review Data Last Updated: 2007-04-11 11:31:07 EST)
10-25-06 5 2\4
(Hide Review...)  If you only ever buy one .NET book, make it this one
Reviewer Permalink
Simply invaluable.

This book encompasses everything a developer that has to design a piece of software needs in order to remain consistent with the rest of the .NET Framework and therefore make their API easily understandable and usable.

This book doesn't teach you how to use the .NET Framework. It doesn't teach you any language. It doesn't teach you tips and tricks.
What it does is teach you what you need to consider whenever you design anything in .NET. If I had it my way, I would make it so that wherever I worked - this would be required reading for anyone with enough experience to start designing software.

The only caveat is that there are a couple of guidelines there that are arguable, like the creation of new replacement types with numerical suffixes (see the TimeZone2 debate). However, 99% of everything written in the book is written in stone.
(Review Data Last Updated: 2007-07-06 12:54:45 EST)
10-24-06 5 2\4
(Hide Review...)  If you only ever buy one .NET book, make it this one
Reviewer Permalink
Simply invaluable.

This book encompasses everything a developer that has to design a piece of software needs in order to remain consistent with the rest of the .NET Framework and therefore make their API easily understandable and usable.

This book doesn't teach you how to use the .NET Framework. It doesn't teach you any language. It doesn't teach you tips and tricks.
What it does is teach you what you need to consider whenever you design anything in .NET. If I had it my way, I would make it so that wherever I worked - this would be required reading for anyone with enough experience to start designing software.

The only caveat is that there are a couple of guidelines there that are arguable, like the creation of new replacement types with numerical suffixes (see the TimeZone2 debate). However, 99% of everything written in the book is written in stone.
(Review Data Last Updated: 2007-03-20 08:03:31 EST)
09-14-06 5 4\6
(Hide Review...)  Best handbook for programmers EVER!
Reviewer Permalink
The authors were very modest in choosing their title. Yes, indeed, they focus on the scenario of writing reusable libraries, and write from the perspective of two of the designers of the .NET Framework. However, the utility of this book goes far beyond what the title implies.

If you actually write code,
If you actually design software,
on ANY platform,
and you dreamed of a book of which every page was packed with exceptionally useful, highly pertinent guidelines that will make your designs better and improve nearly every line of code that you write ... then this is that book.

Every recommendation is clearly presented, and the justifications are concisely, effectively and sufficiently argued, with the counterpoints and exceptions noted.

I would pay $5 per page for this book, and have found it to be, by far, the most outstandingly useful technical book I've read.

Two other reviewers have questioned the structure of the book. Do not be misled. The guidance is very well-organized, and super-imposing that organization is not the simple task that it might appear to have been. Also, the style of the book allows the argument for, and the counterpoints, to be presented concisely. If you not only want to know a good way of doing something, but find yourself either wanting to know why it is a good way, or, in your professional life, as a leader of teams, need to articulate why a particular practice is a good practice, then you will especially benefit from it.

In fact, when I was telling my wife how terrific this book is, I said that the style is totally unlike that of my own book, which is more rigid, stodgy and old-school academic--and I greatly envy Krysztof and Brad for having selected and perfected this ideal style for their material.

Another reviewer questioned whether this book is essential. Yes, it most certainly is. In the same way that I want my airline pilots to have pilot's licenses, I want my software development colleagues to have internalized this work.
(Review Data Last Updated: 2007-07-06 12:54:45 EST)
06-29-06 5 3\7
(Hide Review...)  invaluable to developers of class libraries, components, and frameworks--whether .NET or not.
Reviewer Permalink

Excerpt from C# Online.NET Review (wiki.CSharp-Online.NET):
"The book is a codification of the set of guidelines worked out by the Microsoft .NET Framework development team to govern the project. It has been refined over six years. It's like the Constitution of .NET. But, the guidelines are so well crafted that the principles embodied in them apply equally well, not only, to all .NET languages, but also, to Java or any object-oriented language."
(Review Data Last Updated: 2007-07-06 12:54:45 EST)
06-28-06 5 3\7
(Hide Review...)  invaluable to developers of class libraries, components, and frameworks--whether .NET or not.
Reviewer Permalink

Excerpt from C# Online.NET Review (wiki.CSharp-Online.NET):
"The book is a codification of the set of guidelines worked out by the Microsoft .NET Framework development team to govern the project. It has been refined over six years. It's like the Constitution of .NET. But, the guidelines are so well crafted that the principles embodied in them apply equally well, not only, to all .NET languages, but also, to Java or any object-oriented language."
(Review Data Last Updated: 2007-03-20 08:03:31 EST)
06-28-06 5 (NA)
(Hide Review...)  invaluable to developers of class libraries, components, and frameworks
Reviewer Permalink
Excerpt from C# Online.NET Review [...]:
"The book is a codification of the set of guidelines worked out by the Microsoft .NET Framework development team to govern the project. It has been refined over six years. It's like the Constitution of .NET.... The book will enable you to understand how the .NET Frameworks were designed and how they are meant to be used."
(Review Data Last Updated: 2006-06-29 13:04:41 EST)
05-26-06 3 4\17
(Hide Review...)  A book of do's and dont's
Reviewer Permalink
Just got this book. This is just a book of do's and dont's. Literally. Just about every page says...

DO this.
DON'T do that.
DO that.
DON'T do this.

All the way through the book.

This is not my preferred reading style. I was expecting more tutorials and code examples of some successful object models, not just some rules where the key words to help you remember are repeated and in bold, "DO" and "DON'T".

Considering this was a five-star book and featured in magazines and various web sites, I am disappointed.

I'm sure the actual rules being pointed out are fine. Great, even. Meriting of 3 stars instead of 1 or 2. But I don't think it likely for me to bother reading this book because it has no real structure, hence I don't see it enabling me to remember the points it was trying to make.
(Review Data Last Updated: 2007-03-20 08:03:31 EST)
05-16-06 5 6\7
(Hide Review...)  Great Guidelines for Framework or Library builders
Reviewer Permalink
I found the book immediately helpful. From the first pages, I was able to apply suggestions to how I designed frameworks. I have been creating .Net libraries since 2002. Now as the Lead Architect, my job is to create an entire product framework from the ground up.

My first decision was to ensure that my team had a set of guidelines. I searched the internet and this book came up on Amazon. I purchased the book, and found it immediately helpful. The authors have hand-on experience writing components of the .Net framework. They have learned through trial and error what works best. This book with some minor additions will serve as the guideline for my team.

You will find the book easy to read, clear and concise. In short the specifications of DO, DO NOT, CONSIDER, helped me understand the best practices for creating frameworks. As I read the guidelines, I also uncovered weakness in my understanding, particularly with the 2.0 framework. In these cases, the guidelines served as a target for additional learning.

I agree with the others, this book is not just for .Net frameworks. These are excellent guidelines for any object oriented language; although the book is directly effective for professionals that use the .Net framework.
(Review Data Last Updated: 2007-07-06 12:54:45 EST)
05-07-06 5 2\3
(Hide Review...)  Useful Guidelines for any System (not just .NET)
Reviewer Permalink
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.
(Review Data Last Updated: 2007-07-06 12:54:45 EST)
05-06-06 5 2\3
(Hide Review...)  Useful Guidelines for any System (not just .NET)
Reviewer Permalink
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.
(Review Data Last Updated: 2006-09-09 08:27:40 EST)
04-19-06 5 4\4
(Hide Review...)  Goes beyond .NET
Reviewer Permalink
Even though this book has ".NET" in the name, it really reaches way beyond .NET and applies equally to Java or any other high-level object oriented language. Also, it is not just architects or designers who should read this book. Every developer trying to understand or even just use any kind of framework will benefit from it and gain deeper understanding why things are built the way they are built. Besides, the time comes in life of every developer when all of a sudden you must write your first framework, a set of base classes or whatever shared piece of code. At this moment you will thank yourself for having read this book (and still having it at reach if possible).

WARNING: this book requires some previous knowledge of object-oriented programming and familiarity with a C-like language (code samples are in C#, but any similar language will do). Also, keep in mind that this book is about design and concepts and not about C# or any particular .NET framework feature (although one can pick up some very useful tips along the way).

This is one of the two books that haven't left my desk ever since I bought them (the other one being "Head First Design Patterns" from Eric and Elisabeth Freeman).
(Review Data Last Updated: 2007-07-06 12:54:45 EST)
04-17-06 4 3\4
(Hide Review...)  Design conventions and idioms for .NET libraries
Reviewer Permalink
As an outstanding member of the Microsoft .NET development series from Addison Wesley, this book examines the core issues you should address when designing public APIs with plenty of examples in C#.

After dealing with some general design principles and the philosophy behind the design of the Microsoft .NET Framework, the core of this book revolves around consistency guidelines for the .NET API design, from naming conventions (when to use Pascal casing and when to use camel casing) to the proper use of exceptions, from where to choose structs, classes, or interfaces to how to use properties, events, and operator overloads.

If you work with .NET, this book is an invaluable resource that explains the rationale behind the proposed guidelines. If you don't, you can still benefit from many of the guidelines.

Many comments from distinguished Microsoft employees make of this book an easy-to-read document you will surely enjoy. They even tell you where their designs were not right when they shipped the .NET Framework and, due to backward compatibility requirements, they were forced to live with their mistakes.
(Review Data Last Updated: 2007-07-06 12:54:45 EST)
03-09-06 4 1\3
(Hide Review...)  Perfect book for architecting frameworks
Reviewer Permalink
Book has perfect guidelines for the "layout" of designing a framework.
(Review Data Last Updated: 2007-07-06 12:54:45 EST)
03-08-06 5 2\2
(Hide Review...)  Excellent
Reviewer Permalink
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.
(Review Data Last Updated: 2007-07-06 12:54:46 EST)
01-12-06 5 4\4
(Hide Review...)  Recommended for all .NET developers
Reviewer Permalink
Yes, the title's a mouthful, but it's also well worth a purchase. Although it's generally focused on helping you develop public APIs (i.e. those that are going to be exposed to customers or other teams), it's also a superb reference if you just want to know the correct methodology behind many aspects of .NET development, such as the best method to use when handling exceptions for example.

Common to this book and the Standard Library Annotated Reference titles (also published by Addison Wesley) are the comments from developers, experts and the original authors of the .NET framework themselves, interspersed throughout the main text. These little gems help split the text up, give background details on certain features and can even describe how what ended up shipping was actually dead wrong in retrospect. They're in a conversational style that's refreshing and really aid the understanding of some of the topics. There's even disagreement at times, with annotations appearing one after another, weighing the pros and cons of particular approaches. There's always the danger that a title like this could feel overly prescriptive, but that's definitely not the case here.

The main text is well written and the coverage of topics is just right. It never feels like a boring tome; instead there's genuine insight on the majority of pages with no fluff to speak of. The guidelines themselves come split into Do, Do Not, Avoid and Consider forms, where the first three are strong recommendations and the Consider is a guideline that applies the majority of the time, but is looser than the others. The guidelines always have supporting code examples and, although I thought I was a reasonable .NET programmer, I found myself learning a great deal about how to code correctly against the framework and how to better design my classes, both internal and those that will get used by others.

The book also includes suggested naming conventions (which is always a near religious thing in developer circles, and which I found myself disagreeing with at many points), a sample API design for the .NET 2.0 Stopwatch class (which is great, but all too brief) and a bit of a pointless guide to FxCop, which feels a little like filler material. At around 300 pages, the book is accessible (i.e. you're not going to break your back hefting it around the office), but you're better off picking up the title from Amazon.com where it's significantly cheaper than getting it from the UK site (at $24 instead of a rip-off £28.50).

Completing the package is a DVD with code samples, the exact same Stopwatch API review (why?), and quite a few lecture videos from the people who wrote the book and other .NET luminaries like performance whiz Rico Mariani (who talks very fast, like it's costing him valuable cycles to include any space between his words!), FxCop dev Michael Murray and Steven Clarke.

This one's a keeper.
(Review Data Last Updated: 2007-07-06 12:54:46 EST)
01-11-06 5 4\4
(Hide Review...)  Recommended for all .NET developers
Reviewer Permalink
Yes, the title's a mouthful, but it's also well worth a purchase. Although it's generally focused on helping you develop public APIs (i.e. those that are going to be exposed to customers or other teams), it's also a superb reference if you just want to know the correct methodology behind many aspects of .NET development, such as the best method to use when handling exceptions for example.

Common to this book and the Standard Library Annotated Reference titles (also published by Addison Wesley) are the comments from developers, experts and the original authors of the .NET framework themselves, interspersed throughout the main text. These little gems help split the text up, give background details on certain features and can even describe how what ended up shipping was actually dead wrong in retrospect. They're in a conversational style that's refreshing and really aid the understanding of some of the topics. There's even disagreement at times, with annotations appearing one after another, weighing the pros and cons of particular approaches. There's always the danger that a title like this could feel overly prescriptive, but that's definitely not the case here.

The main text is well written and the coverage of topics is just right. It never feels like a boring tome; instead there's genuine insight on the majority of pages with no fluff to speak of. The guidelines themselves come split into Do, Do Not, Avoid and Consider forms, where the first three are strong recommendations and the Consider is a guideline that applies the majority of the time, but is looser than the others. The guidelines always have supporting code examples and, although I thought I was a reasonable .NET programmer, I found myself learning a great deal about how to code correctly against the framework and how to better design my classes, both internal and those that will get used by others.

The book also includes suggested naming conventions (which is always a near religious thing in developer circles, and which I found myself disagreeing with at many points), a sample API design for the .NET 2.0 Stopwatch class (which is great, but all too brief) and a bit of a pointless guide to FxCop, which feels a little like filler material. At around 300 pages, the book is accessible (i.e. you're not going to break your back hefting it around the office), but you're better off picking up the title from Amazon.com where it's significantly cheaper than getting it from the UK site (at $24 instead of a rip-off ý28.50).

Completing the package is a DVD with code samples, the exact same Stopwatch API review (why?), and quite a few lecture videos from the people who wrote the book and other .NET luminaries like performance whiz Rico Mariani (who talks very fast, like it's costing him valuable cycles to include any space between his words!), FxCop dev Michael Murray and Steven Clarke.

This one's a keeper.
(Review Data Last Updated: 2006-07-07 08:12:54 EST)
12-15-05 4 4\4
(Hide Review...)  Can help improve your API design
Reviewer Permalink
The book is essentially about designing good API based on the lessons learned when designing the .NET Framework. A good knowledge of the CLR is assumed and in particular C#. Most of the examples are in C# syntax with some in VB.NET. The book takes what could be very dry material and makes it more interesting and useful with real examples from the current CLR and anecdotal information from various well known names in the .NET world.

There are 9 chapters and 3 Appendices with information on style conventions, the FxCop tool and a sample API.
The first 7 chapters are well-structured and very readable, even start-to-finish. They can also be easily used as reference material focusing on specifics such as naming guidelines, type and member design and exception class design. The last two chapters cover general usage guidelines and common design patterns. These topics are very broad and consequently the chapters feel more like summary info and don't go into much depth. Picking up some titles from the suggested reading list is definitely recommended to augment these chapters if you are interested in more detail.

Overall the book is readable and straightforward and should help anyone writing .NET libraries produce more usable APIs. Certainly the guidelines are mostly covered by FxCop but the additional information around the 'why' for the rules should help you fix the violations in the right way.
(Review Data Last Updated: 2007-07-06 12:54:46 EST)
12-14-05 4 4\4
(Hide Review...)  Can help improve your API design
Reviewer Permalink
The book is essentially about designing good API based on the lessons learned when designing the .NET Framework. A good knowledge of the CLR is assumed and in particular C#. Most of the examples are in C# syntax with some in VB.NET. The book takes what could be very dry material and makes it more interesting and useful with real examples from the current CLR and anecdotal information from various well known names in the .NET world.

There are 9 chapters and 3 Appendices with information on style conventions, the FxCop tool and a sample API.
The first 7 chapters are well-structured and very readable, even start-to-finish. They can also be easily used as reference material focusing on specifics such as naming guidelines, type and member design and exception class design. The last two chapters cover general usage guidelines and common design patterns. These topics are very broad and consequently the chapters feel more like summary info and don't go into much depth. Picking up some titles from the suggested reading list is definitely recommended to augment these chapters if you are interested in more detail.

Overall the book is readable and straightforward and should help anyone writing .NET libraries produce more usable APIs. Certainly the guidelines are mostly covered by FxCop but the additional information around the 'why' for the rules should help you fix the violations in the right way.
(Review Data Last Updated: 2006-07-07 08:12:54 EST)
11-21-05 5 3\4
(Hide Review...)  Excellant Work!!
Reviewer Permalink
This book is not just for people developing frameworks but also for Application programmers who use frameworks. If you donot know how frameworks are designed then you wont be really efficient in using it.

I also use thier Naming Guidelines in our software development team just to create a standard. Overall a class work. Kudos to Brad et al.
(Review Data Last Updated: 2007-07-06 12:54:46 EST)
11-20-05 5 3\4
(Hide Review...)  Excellant Work!!
Reviewer Permalink
This book is not just for people developing frameworks but also for Application programmers who use frameworks. If you donot know how frameworks are designed then you wont be really efficient in using it.

I also use thier Naming Guidelines in our software development team just to create a standard. Overall a class work. Kudos to Brad et al.
(Review Data Last Updated: 2006-07-07 08:12:54 EST)
11-13-05 5 1\6
(Hide Review...)  A unique work on .NET API design
Reviewer Permalink
It's not often that I see a book like this, and I do so with pleasure. This book covers best practices in developing frameworks and APIs for .NET. And it comes from a variety of different sources and perspectives. There is excellent pragmatic advice in here and it's worth a read even if you aren't doing .NET.
(Review Data Last Updated: 2007-07-06 12:54:46 EST)
11-08-05 5 22\26
(Hide Review...)  Nothing less than wisdom distilled
Reviewer Permalink
At Microsoft I work on a development team that has been using the guidelines from this book for nearly 4 years. I am not always a fan of coding standards, thinking they are a necessary evil, often simply arbitrary choices made for consistency.

The Framework Design Guidelines are different. These ensure deep consistency across not just source code, but more importantly the public classes themselves. They include critical, not to be ignored rules on security, cross-language access and localization, as well as the usual good practice type guidelines. But even these "good" practices are always backed with well reasoned argument and examples. As an added bonus FxCop provides a static analysis tool that enforces the guidelines.

Finally, the Framework Design Guidelines provide deep insight into how the .NET Frameworks are designed and used. With the guidelines in mind it is far easier to remember or even guess what classes are provided and how they should be used. This just makes the libraries that much more productive.

Full disclosure: I know Brad and Krzysztof personally, but I would simply remain silent if I didn't think highly of the work.
(Review Data Last Updated: 2007-07-06 12:54:46 EST)
11-07-05 5 10\12
(Hide Review...)  Nothing less than wisdom distilled
Reviewer Permalink
At Microsoft I work on a development team that has been using the guidelines from this book for nearly 4 years. I am not always a fan of coding standards, thinking they are a necessary evil, often simply arbitrary choices made for consistency.

The Framework Design Guidelines are different. These ensure deep consistency across not just source code, but more importantly the public classes themselves. They include critical, not to be ignored rules on security, cross-language access and localization, as well as the usual good practice type guidelines. But even these "good" practices are always backed with well reasoned argument and examples. As an added bonus FxCop provides a static analysis tool that enforces the guidelines.

Finally, the Framework Design Guidelines provide deep insight into how the .NET Frameworks are designed and used. With the guidelines in mind it is far easier to remember or even guess what classes are provided and how they should be used. This just makes the libraries that much more productive.

Full disclosure: I know Brad and Krzysztof personally, but I would simply remain silent if I didn't think highly of the work.
(Review Data Last Updated: 2006-05-16 09:28:51 EST)
10-20-05 5 3\8
(Hide Review...)  Great book even if you aren't a framework developer
Reviewer Permalink
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.
(Review Data Last Updated: 2006-05-06 09:11:20 EST)
10-18-05 4 6\7
(Hide Review...)  Must-own book for any class library developer.
Reviewer Permalink
The new book from Brad Abrams and Krzysztof Cwalina is a must-have book for anyone writing .NET and Mono code.


The book includes many of the design guidelines that Brad's blog is famous for. The book is not just a collection of rules, but it also includes the rationale for some of the design decisions and what really makes the book interesting are the commentaries from other developers and architects involved in .NET.

This book is packed with gems.
(Review Data Last Updated: 2006-04-18 08:57:20 EST)
10-11-05 5 9\9
(Hide Review...)  many common sense guidelines
Reviewer Permalink
The .NET framework is still rather new and unfamiliar to many programmers. This book is part of an ongoing series of texts from Microsoft that offers education as to the best use of .NET. The book tackles one of the main problems of computing. Namely, how to write code that will be put into libraries and reused by many others? Arguably, this might even be the central problem in many computing projects.

The guidelines given in the text should strike the reader as very much common sense. Take these, for instance: "Do not require that users perform any extensive initialisation before they can start programming basic scenarios", or "Do provide good defaults for all properties and parameters". If you have programmed in any language, you should readily agree with guidelines like these.

The guidelines also include an excellent discussion about the naming of classes and methods in those classes. This is quite general; applying to any object oriented language like C++ or Java. Indeed, if you program in those languages, consider looking up this chapter of the book for useful hints.

The book also continues a nice practice of the earlier books in the series. It has many sidebars with different people offering informal remarks about the adjoining text. Commentaries that can greatly help your assimilation of the material.
(Review Data Last Updated: 2006-04-17 07:22:50 EST)
10-08-05 5 7\7
(Hide Review...)  If you want me to buy your .NET component or library, you better read this book!
Reviewer Permalink
This book was written by *the* two Microsoft experts on design guidelines for the .NET Framework: Brad Abrams and Krzysztof Cwalina. It really is a MUST read for anybody designing OO class libraries especially libraries that are based on managed code (aka .NET Framework). What I really like is that there are not only "Do", "Do Not", "Avoid", "Consider" guidelines but most of the guidelines are accompanied by annotations from many different folks (Jeff Richter, Rico Mariani, Chris Brumme, Chris Sells, Brent Rector, etc). These annotations really help with the pragmatic side of deciding between conflicting forces. That is, there are many guidelines where you could go one way versus another. The annotations serve to help you decide which way to go. I give it two thumbs way up and even thought it's about 300 pages, it is a quick read.

(Review Data Last Updated: 2006-03-09 07:32:14 EST)
10-03-05 5 6\6
(Hide Review...)  Well Worth Its Weight in Gold
Reviewer Permalink
The title I chose for this review is no cliché. This book earns each and every penny you spend (or have already spent) on it.

I was deceived into thinking that the book was the work of only Cwalina and Abrams and that it's merely a rehash of FxCop guidelines that we have already known and been using for a while now until I read book and encountered the annotations. To have .NET gods (dare I say) like Richter and Hejlsberg contributing suggestions (whether you already knew them or not) in the same book along with other greats like Mariani, Gunnerson, Chris Sells, and Paul Vick to name just a few is simply a slam dunk.

One myth about the book is that it's only useful for folks building APIs. That is so far away from the truth. This book "should" be read by both .NET architects and developers. The suggestions and tips presented in this book can help you write better and more efficient and re-usable code whether it is for a little program or a class library.

And if all this book material was not enough to quench your thirst, the book comes with a bonus: a DVD containing video presentations and seminars on topics related to the book's material (Rico Mariani's presentation is a must see), a sample "real-life" API specification example for the .NET Framework 2.0's System.Diagnostics.StopWatch class, and a .NET 2.0 tool with source code that can be helpful in code reviewing API classes (even though it still has some minor bugs).

This book contains a wealth of material in so small a book and so easy a read that it won't take you too long to read. If you are like me, you would not be able to let go of it before finishing it.

The only take I have on this book is that it should have been available a long time ago, probably when .NET 1.0 was shipped out (blame Microsoft?). It would have helped prevent all the .NET spaghetti that we still see these days.

If this book ever gets any negative reviews, they would probably come from either someone clueless or from someone utterly jealous. It would be naïve to think of this as just a book. Get it, read it, and you'll see for yourself what I mean.
(Review Data Last Updated: 2006-03-08 09:20:16 EST)
  
                  Reader Reviews 1 - 35 of 35                 
  
  
  
  
  
  

Because the data used to generate this site come from outside sources, VeryWellSaid.com cannot guarantee the completeness or accuracy of the data.
Search VeryWellSaid™
Google
Web VeryWellSaid™
New subjects are added every week.
View Subjects Below by:
* Top Selling
 (click category name, left)
* Top-Rated Top Sellers
 (click 'Top Rated', right)
In the news...  
Dubai\UAE Top Rated
Influenza\Bird Flu Top Rated
Iraq Top Rated
Supreme Court Top Rated
All Books Top Rated
Arts Top Rated
Photography Top Rated
Digital Photography Top Rated
Digital Cameras Top Rated
Biography Top Rated
Business Top Rated
Management Top Rated
Marketing Top Rated
Sales Top Rated
Stocks Top Rated
Bonds Top Rated
Real Estate Top Rated
Trading Top Rated
Commodities Trading Top Rated
Time Management Top Rated
Starting A Business Top Rated
Children's Top Rated
Comics Top Rated
Computers Top Rated
PC Top Rated
Mac Top Rated
Programming Top Rated
Design Patterns Top Rated
.Net Top Rated
C# Top Rated
Vb.Net Top Rated
Asp.Net Top Rated
Java Top Rated
Python Top Rated
PHP Top Rated
Perl Top Rated
Javascript Top Rated
Ajax Top Rated
CSS Top Rated
Open Source Top Rated
SQL Top Rated
Databases Top Rated
Oracle Top Rated
MySql Top Rated
Sql Server Top Rated
IIS Top Rated
Apache Top Rated
Linux Top Rated
Windows Server Top Rated
Project Management Top Rated
HTML Top Rated
UML Top Rated
IT Certifications Top Rated
Cisco Certifications Top Rated
MCSE Top Rated
MCSD Top Rated
Cooking Top Rated
Italian Cooking Top Rated
Vegetarian Cooking Top Rated
Wine Top Rated
Engineering Top Rated
Entertainment Top Rated
Health Top Rated
Nutrition Top Rated
Dieting Top Rated
Sex Top Rated
History Top Rated
Military History Top Rated
British History Top Rated
Middle East History Top Rated
Land Battles Top Rated
Naval Warfare Top Rated
Air Warfare Top Rated
9/11 Top Rated
Terrorism Top Rated
Home Top Rated
Mortgage\Home Equity Loan Top Rated
Cars Top Rated
Car Buying Top Rated
Sports Cars Top Rated
Cat Top Rated
Humor Top Rated
Horror Top Rated
Law Top Rated
IP Law Top Rated
Legal History Top Rated
Fiction Top Rated
Oprah's Book Club Top Rated
Medicine Top Rated
Cancer Top Rated
Stroke Top Rated
Heart Disease Top Rated
Fertility Top Rated
Diabetes Top Rated
Pharmacology Top Rated
Back Problems Top Rated
Menopause Top Rated
Thyroid Top Rated
Pain Top Rated
Organic Chemistry Top Rated
Immune System Top Rated
Mystery Top Rated
Nonfiction Top Rated
Outdoors Top Rated
Running Top Rated
Radio Control Models Top Rated
Guns Top Rated
Parenting Top Rated
Divorce Top Rated
Professional Top Rated
Reference Top Rated
Religion Top Rated
Romance Top Rated
Science Top Rated
Physics Top Rated
Chemistry Top Rated
Astronomy Top Rated
Psychology Top Rated
Science Fiction Top Rated
Sports Top Rated
Teens Top Rated
Travel Top Rated
USA Top Rated
Europe Top Rated
France Top Rated
Italy Top Rated
England Top Rated