Code Monkeyism

Programming is hard by Stephan Schmidt

Best book on object orientation

I’ve recently started to read the best book on object oriented programming. There are other good books that deepen your understanding of OO like “Refactoring” and “P of EAA” from Fowler, “Design Patterns” from the GoF, the McConnell books, “The Pragmatic Programmer”, the OO books from Robert C. Martin and some others. All recommended to read. But the best I’ve read on OO in the last 15 years is Domain Driven Design from Eric Evans. There are a lot of deep insights about how to build your domain model and structure your objects and classes in that book. Highly recommended.

About the author: Stephan Schmidt is currently a team manager at ImmobilienScout24 in Berlin. Stephan has been working as a head of development and CTO. He has used a lot of different technologies in the last 20 years including Java, Rails and Python. Stephans main field of interest is maintainablity and productivity in software development. Want to know more? All views are only his own.

If you did like this article but you don't want to subscribe to new articles with your reader, you can follow me on Twitter or subscribe to new posts with your email:

Comments

My favorite book for business domain design is “Streamlined Object Modeling” by Nicola, Mayfield, and Abney.

Their approach is informed by Peter Coad’s teachings for business component design. Streamlined Modeling gives an OO model that has a fairly direct mapping to a relational model as far as the data goes, but of course with considerable behavior added as well. One of the things that I like about Streamlined Modeling is the *almost* total absence of ambiguity, which means that it’s pretty hard to run into analysis paralysis. (In my limited experience, the folks who dislike Streamlined Modeling the most are the ones who believe that the “best choice” should be left to the designer.)

One of the ways that Streamlined Modeling contradicts Evans is that Evans pre-optimizes his models for a particular application. Streamlined Modeling doesn’t prohibit optimization, but first one develops each part of the model in full detail (at least mentally) and then removes only the bits that will add no value. One really big difference from DDD is that Streamlined Modeling relies heavily on bidirectional associations between objects, so that you can just as readily find all of the parts on an invoice or all of the invoices that included a certain part.

stephan

Thanks for the link, I’ll take a look. Sounds interesting.

The S.O.M. may not be so well known but has some good and unique content. It is rather prescriptive and it lays out a detailed plan about where to assign which responsibilities. So much in fact, that I can’t bother to follow it consistently :)

I did find it a bit too heavy on the structural aspects and light when it comes to behavior (i.e. a wee bit too data-centric to my taste). But it is a good discussion, lots of good ideas.

To the list of classics above, I would add two books that have had a big influence on my way of thinking about OOD :

1) ‘Object-oriented software construction’ (B.Meyer) for its groundwork and focus on specification.

2) ‘Fundamentals of object-oriented design in UML’ (Page-Jones). It has three parts, the first two are the usual discussion of OO and UML and can safely be skipped. However, the third part (chapters 8 through 14) will totally make it worth your while.

Best regards,
Yanic

stephan

SOM is not available on Amazon.de :-(

I’ll take a look into the other ones, for more than 20 years of OO-programming there are very few excellent books.

Thanks a lot
-stephan

Leave a Reply