Darrell Norton's Blog [MVP]

Sponsors

The Lounge

News

  • Darrell Norton pic

    MVP logo

    View Darrell Norton's profile on LinkedIn

    Currently Reading:

    weewar.com

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
Review of Object Thinking by David West

Object Thinking, by David West, is not your typical object-oriented programming book. The majority of the book explores the philosophical undertones of agile development and relates it back to object-oriented programming (OOP). West’s premise is that the vast majority of those purporting to do OOP are really writing miniature COBOL programs inside of classes. Agile methodologies and their thought leaders, like Kent Beck and Ward Cunningham, are some of the few “true” object-oriented programmers.

According to West, OOP really can result in order-of-magnitude improvements over traditional structured design methods. It takes a very special mindset, which he calls “object thinking”, to utilize OOP effectively. He shows some methods to help develop in a true object-oriented manner, some of which are interesting. Object cubes, for example, are “single, consistent, metaphor-preserving model objects (page 173).” Side 1 is your typical CRC card. Side 2 is a text description of the nature of the objects represented by the class. Side 3 is a list of contracts (public, protected, private). Side 4 identifies the data that the class requires to fulfill its duties. Side 5 is a list of all the message protocols (method signatures). And side 6 describes any events the object broadcasts.

Another topic the book covers is the use of self-evaluating rules as an object. What it basically works out to be is a class that can be instantiated for every business rule with what appear to be basic conditions, very similar to what you find in Excel for the “Conditional Formatting” of a cell. I haven’t needed to encapsulate business logic as a specialized type of self-evaluation rule class, but I can see that there could be a need.

Overall I feel that the book makes an important statement about the state of object-oriented programming today. It does relate to agile methods, and I’m sure that the thought leaders mentioned in the book develop using true “object thinking” as the author espouses it. However, I was left feeling like it needed more guidance on how to be a better object thinker. If you are interested in philosophy as it applies to software development, then this book may be a good read. If you are ruthlessly pragmatic, I'd suggest borrowing it and reading just chapters 3, 6, 7, 8, and 9.

Check out more book reviews at the WeProgram.NET Book Review page or my Book Review category.


Posted 08-03-2004 7:07 PM by Darrell Norton

[Advertisement]

Comments

Silk and spinach wrote object thinking
on 08-07-2004 2:50 AM
I really must get around to reading Object Thinking. It gets a good review from Darrell Norton among others, and Andy even uses it to support my own metrics! When it comes to coaching teams in object-oriented design, I've always had trouble finding good reading material to give out. Books I've tried include: Bertrand Meyer's Object-Oriented Software Construction. Back in the early nineties this was just about all that was available. While it does emphasise the behavioural view of objects, the use of Eiffel doesn't help, and there's little help with concepts such as refactoring or the need to eliminate duplication. Rebecca Wirfs-Brock's Designing Object-Oriented Software. I've always liked this book, but for some reason British Java programmers never seem comfortable with it. And again, it has little to say about code structure or quality. Kent Beck's Smalltalk Best Practice Patterns. This is my favourite of the three, because the patterns directly apply to refactoring code into great designs. But again, I've found that Java programmers seem scared to death of reading smalltalk. Is Object Thinking what I've been looking for? Or is there another book out there that can show talented programmers what great code looks like?...