Updates

Latest Tweet



What's New?

Check out for latest innovation, a computer based training video collection


Like this Page

Object-Oriented Design Heuristics Review by Marc Chu

Should be considered a classic

I'm utterly astonished that I had never heard of this book until about a month ago. I read a mention about it in another review, did a search, saw the excellent (though scarce) reviews here, and decided to buy it. I am definitely glad I did. It was worth every penny.

As someone who has been programming professionally for nearly 5 years, I came to realize something soon after joining the industry: a computer science university program doesn't teach you how to design and write software. Oh, sure, you'll feel pretty smart when you write a quick-sort or a binary search tree and then do the Big-O analysis on it (even though just about any language you use will already have these optimized and packaged up somewhere for you). You'll do calculus and differential equations, some discrete math, maybe combinatorics. And of course, you'll take some programming classes, where you'll learn the syntax of one or more languages. You'll get fed buzzwords, and you'll memorize their definitions so you can spit them back out on a test. "Inheritance". "Polymorphism". But you really can't sink into anything deeply enough to understand what they really are, or why they're important. So you end up getting a job and writing terrible code, built on top of the terrible code that already exists, because the last fresh-out was in the same position as you, and he did it because of the people before him. But after awhile, you start to realize that making simple changes is unusually difficult, and you start to wonder what's wrong. That's when you start doing a little self-study and, hopefully, you stumble across a book like this. I just wish I'd stumbled 5 years ago.

As the title suggests, the book is full of heuristics (rules-of-thumb, if you will) related to good object-oriented design. But it's really much more. The book is not built around the heuristics. One might expect the author to go through the book listing the heuristics one-by-one, then explaining them, in a sort of catalog fashion. But what you get instead is a discussion of OOP topics, starting from the most basic. After he explains the reasoning behind the topics and the pitfalls encountered when dealing with them as they pertain to design, he gives the proper heuristic to help you on your way.

Arthur Riel spends the book citing his experiences in industry to relate these numerous OO topics to the real world. He is also able to reflect on his experience in teaching courses on OOD to others in order to address common misconceptions and confusions. Riel is able to explain every topic in the book with such stunning clarity that it's actually a disappointment to see that he hasn't written any other books. One can easily breeze through the Object-Oriented Design Heuristics in a few days, and it should absolutely be read cover-to-cover. I found that just about any question I've ever had on good object-oriented design was explained at some point. Some could certainly argue about some of the heuristics, but Riel is never dogmatic about them. He freely admits in the foreword that sometimes they conflict with what more closely models the real world, and some of the heuristics even conflict with each other. It is up to the designer to pick the best design choice for the situation. With this book in hand, that should be no problem.