A year ago I wrote "I’m working on an exciting project (in C#) where I’ve come up with a number of interesting things to write about in the future, when I have more time".
Guess what? I’m still working hard on the very same project! For 18 months I’ve been working on this with my friend and colleague Jimmy Nilsson. Jimmy writes the domain model (including data storage and also develops a deeper understanding of the customer’s business logic) while I do "the rest".
I just counted the number of source code lines in my part and found that it is made of 170,000 lines of C# code – and counting (and don’t for a second believe that you can find any duplicated code in there; I’d rather watch sports for a whole day than yield to "clipboard inheritance").
Now here is a beautiful thing: in not a single one of these 170,000 source code lines can you find a clue to that there is an SQL Server somewhere "down there". There are only nice clean objects presented to me by Jimmy’s Domain Model, freeing me to focus on creating a nice, functional user experience instead of getting dirty with how to get data off and to the database.
This is achieved by fully utilizing the concept of Domain Driven Design [Evans]. Jimmy "wraps" the database for me and presents an object model (the domain) so that I can work totally object oriented and focus on logic and UI and just forget about the persisting details. This is truly the way programming was meant to be! 🙂
Now you may just wonder who Jimmy managed to get my life so simple. He has been kind enough to tell us all exactly how in his new book Applying Doman-Driven Design and Patterns!