DDD = ?
April 7th, 2009
Mark Needham has a very interesting post regarding Domain Driven Design. One paragraph that caught my eye especially is:
As Luis Abreu points out, I don’t think there is a precise definition of what DDD actually is but for me the essence of DDD is still the same as when I compared it with OO i.e. Domain Driven Design = Object Oriented Programming + Ubiquitous Language.
I think that Mark is on to a very useful and succinct definition of DDD, yet I feel he overlooked the Law of Demeter. Building on Mark’s definition I’d define DDD as Domain Driven Design = Object Oriented Programming + Ubiquitous Language + The Law of Demeter. While some would argue that the Law of Demeter is implicit in Object Oriented Programming (or at least of OOP of the good kind…) I believe that it is important enough for successful Domain Driven Design that it should be explicitly mentioned.
Looking forward to your comments!








April 7th, 2009 at 7:13 pm
Good point – I think one of if not the most important parts of OOP is the law of demeter. So many times we just use ‘objects’ as data containers and completely miss the chance to create nice abstractions with behaviour.
My colleague Nick Drew has written a cool post on refactoring code to Tell Don’t Ask – http://pilchardfriendly.wordpress.com/2009/04/06/refactoring-to-law-of-demeter/
April 7th, 2009 at 10:36 pm
Nick is a great bloke and an incredible developer — I’ve worked with him at White Pages @ Sensis. I’ll definitely have a read of his blog post.
April 8th, 2009 at 7:49 am
You may find this post interesting as a design technique / exercise to try, as it gets you to think differently: http://jamesladdcode.com/?p=12
Trying the ‘East’ approach forces you to use the Hollywood Principle and the Law Of Demeter. I’d also be interested in your experience with applying the approach as an exercise.