Skip to: Site menu | Main content

DDD = ?

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!

3 Responses to “DDD = ?”

  1. Mark Needham Says:

    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/

  2. Tal Rotbart Says:

    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.

  3. Jamesl Says:

    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.

Leave a Reply