• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

Books to get better at object oriented design?

OneOfTheseDays

Diamond Member
Granted I have a CSE degree and have been working in the industry for 5 years, but I still feel in many ways I can learn and grow as a software developer. Anyone have any good recommendations for an object oriented design book? Thanks.
 
It's been a long time since I paid attention to published work on the topic, but back in the 90's the essential authors included Grady Booch, Ivar Jacobsen, and James Rumbaugh. Have a search for those guys on Amazon and you'll get some ideas from the reviews I would imagine.
 
I would attack the OO design learning on a few fronts. The first front is design patterns, which is an essential set of knowledge. I would read "Design patterns : elements of reusable object-oriented software" for that because the original book is still the definitive guide that gets what they are. Only once you can draw all the patterns from heart will you be able to start recognising and using them in your work. Groking this book takes years of practice.

The second front to attack is that of code quality and design. Clean Coding by Robert Martin (uncle bob) is a great book for looking at the big and little issues of code organisation in OO.

The third front is how to translate into classes and objects and there are a couple of things to do here. The first is read Uncle bobs CoffeMaker design paper (http://www.objectmentor.com/resources/articles/CoffeeMaker.pdf). The second one is to do the programming Kata with a restrictive set of rules by Jeff Bay (http://www.cs.helsinki.fi/u/luontola/tdd-2009/ext/ObjectCalisthenics.pdf). That second one if you also add 2 more rules you'll get that much more benefit but conversely its even harder to do:
1. No method can take more than 1 variable as input.
2. No method can be longer than 6 lines.

There are plenty of other books and resources in the area but those are the really important ones IMO.
 
Granted I have a CSE degree and have been working in the industry for 5 years, but I still feel in many ways I can learn and grow as a software developer. Anyone have any good recommendations for an object oriented design book? Thanks.

I liked C++ Program Design by Cohoon and Davidson, but that was years ago. Must be something better/newer by now.
 
The third front is how to translate into classes and objects and there are a couple of things to do here. The first is read Uncle bobs CoffeMaker design paper (http://www.objectmentor.com/resources/articles/CoffeeMaker.pdf). The second one is to do the programming Kata with a restrictive set of rules by Jeff Bay (http://www.cs.helsinki.fi/u/luontola/tdd-2009/ext/ObjectCalisthenics.pdf). That second one if you also add 2 more rules you'll get that much more benefit but conversely its even harder to do:
1. No method can take more than 1 variable as input.
2. No method can be longer than 6 lines.
So the goal of Bay's exercise is to abuse object oriented features to do absolutely everything, including things they are terrible for?

Like participating in an obfuscated C contest, I'm sure figuring out how to adhere to Bay's rules has some pedagogic value. But is it high-percentage, effective learning? Certainly the result of adhering to the rules will be terrible, tortured code (well, highly depending on language used, whether the task itself is trivial, etc).

I feel most people apply complicated OO patterns too readily, rather than too little, and what the average coder is lacking the most is functional programming.

Of function length --
http://dubroy.com/blog/method-length-are-short-methods-actually-worse/
 
Back
Top