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.
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.
January 21st, 2008