This is Andy's Typepad Profile.
Join Typepad and start following Andy's activity
Join Now!
Already a member? Sign In
Andy
Recent Activity
Yes! Thank you for starting this! I've been holding this in for a long time and I'm thankful that somebody else has questioned the relevancy of this 'Classic'. There is exactly ONE chapter in this book which IS timeless and HAS stood the test of time in my opinion. That chapter is chapter ONE. If developers spent as much time rereading chapter one as they've spent trying to understand the subsequent design patterns, the programming world would be a much better place to live in. As some (though I'm convinced not enough) might recall, chapter one introduces the motivation behind OO design. It explains how inheritance is so often misused by making a distinction between white box and black box inheritance (inherit to be reused, not to reuse). In addition it describes why composition is often a MUCH better choice than inheritance. Over time I have found these simple and basic concepts the most valuable in the book and MUCH more valuable than ANY of the design patterns that are subsequently presented. More often than not, packages have gone far far out of their way to water and grow their inheritance tree as if it were a tree in their front yard. Once they fall down this trap, they seldom realize that they are obfuscating and complicating code in a way that makes it virtually impossible to understand, use or maintain. I've seen large, 'highly regarded' projects make this exact same mistake and ultimately they've failed. The GoF wisely noted this and described it superbly in Chapter one of their book. To this date I have not seen a more succinct and practical explanation of the pitfalls and practical purposes of inheritance. Though I don't think it is fair to pounce, little else in the book has stood the test of time in my opinion. In particular, I can easily single out the Singleton design pattern as a TERRIBLE inclusion. The simplicity of this 'design pattern' has caused many many a novice programmer to gravitate to it naively. I've personally seen several developers use it simply in order to cite that they 'use design patterns' and it has caused me countless headaches and dealings with bad designs which were built around it. I'd be fascinated to learn what any of the GoF now think about the inclusion of that pattern. I'm personally convinced that it has caused many lifetimes worth of bugs and bad designs. Bottom line is that Singleton is synonymous with GLOBAL DATA, and is subject to EVERY complication and problem which surrounds global data.
Toggle Commented Aug 25, 2010 on Rethinking Design Patterns at Coding Horror
Andy is now following The Typepad Team
Aug 24, 2010