David Hayden [MVP C#]

Sponsors

The Lounge

Wicked Cool Jobs

News

  • CodeBetter.Com Home

Other Links

Teas

Patterns & Practices

Florida .NET Developer

Book Reviews

Tampa ASP.NET MVC Developer Group

Advertisement

Images in this post missing? We recently lost them in a site migration. We're working to restore these as you read this. Should you need an image in an emergency, please contact us at imagehelp@codebetter.com
Framework Design Guidelines Book Review

Framework Design Guidelines - Conventions, Idioms, and Patterns for Reusable .NET Libraries is one of those few books you keep in reaching distance from your desk.  For me, it sits right next to Jeffrey Richter's oldie but goodie - Applied Microsoft .NET Framework Programming.  ( I was even able to squeeze in Sahil's Pro ADO.NET 2.0 :)  Although I was originally worried that it would be more theoretical in nature and mainly apply only to architect types, such is not the case.  It is a great combination of 1) best practices concerning fundamental API and class design; 2) great tutorials on .NET framework classes and the when, why, and how to use them; and 3) common design patterns for better manageability and extensibility of your frameworks.

 

Best Practices on API and Class Design

The book is filled with too many recommendations to mention

  • When to use a property or a method
  • Choosing between an interface or a base class
  • Proper use of constructors
  • Pitfalls and expectations when returning arrays
  • How to name everything including your first born
  • Creating overloaded methods.
  • etc...

Trust me when I say the book includes answers to everything and the kitchen sink as well as good and poor examples in the .NET Framework.  Top that off with annotations by many respected developers and authors giving their 2 cents with respect to performance, manageability, usability, etc.  And, hey, sometimes they don't always agree :)

 

Great Tutorials on .NET Framework Classes - The Good, The Bad, and The Ugly :)

Great information on the stuff that I often struggle with and for which I will always need a book to make sure I am doing it "right."

Great information like:

  • When to use Structs vs. Classes
  • Proper Enum Use and The [Flags] Attribute
  • Passing by Reference and Value
  • Throwing Exceptions
  • Using Collections
  • Boxing and UnBoxing
  • etc...

And a whole bunch of different perspectives and sometimes differences of opinions on when and why they matter.

 

Common Design Patterns

If you are going through all the trouble of building a framework, which is no small task, right along with making sure it is usable and intuitive is the need for making sure it can be easily maintained and evolve with future needs.  Hence, you will need to use some common design patterns to make sure you don't code yourself into a corner.  The book touches on a few:

  • Aggregate Component
  • Dispose Pattern
  • Async Pattern
  • Good 'ol Template Method
  • Factories and Factory Method
  • Optional Feature Pattern
  • etc...

This is by no means complete, but it is a good start for those interested in common design patterns for frameworks.

 

Conclusion

Good book for developers of all skills and roles.  I highly recommend it.

 

Related Topics and Books:

 

Drinking:  Jasmine Pearls Green Tea and now switched To Yuengling Black & Tan for Game Day :)

 


Posted Sun, Feb 5 2006 3:45 PM by David Hayden

[Advertisement]

Comments

Sahil Malik wrote re: Framework Design Guidelines Book Review
on Sun, Feb 5 2006 9:34 PM
Okay my book next to theirs is a start :). Now only if I could get their smarts hmmm... !!
Jason Haley wrote Interesting Finds
on Mon, Feb 6 2006 8:21 AM
Brad Abrams wrote Framework Design Guidelines review and thank you Belgium
on Fri, Feb 10 2006 11:33 AM
David Hayden (a C# MVP) recently posted a good review of the FDG.    Here is one notable...
David Hayden [MVP C#] wrote Pro NET 2.0 Code and Design Standards in C# Book Review
on Sun, May 7 2006 6:02 PM
Pro .NET 2.0 Code and Design Standards in C# helps the developer adopt code, design, and documentation...
Devlicio.us