So, I’m finally done spiking something, and ready to start on a major new project. I’ve read 40+ blog posts and technical articles a day for the last 3 months, I’ve looked at nearly all the various alternatives that made sense to me, and I think I’m ready to go.
I’m not going to do strict DDD (since it is impossible here), TDD (since it is misguided here) or BDD (since I really can’t stand it and as the main business user and developer, I can’t do it ‘correctly’ anyway, if there was such a thing as doing BDD correctly, which there isn’t, but I digress), but I am going to do a version of something that people have called DDD-lite.
That is, I’m going to have a central POCO domain model, I’m going to use repositories of a common type, I’m going to use services, and I’m going to use either MVP or MVC at the presentation layer (which will involve both Web and Windows Forms, and Silverlight and WPF). And as hard as it is for me to do, I’m going to surround them all with tests (though will not strictly write the tests first or have 100% code coverage, but focusing on tests that actually mean something).
Okay, so I’m ready to go. I think.
Probably the biggest difficulty has been simply choosing amongst alternatives (still debating MVP vs. MVC on the web side). There are so many different ways of doing IRepository, for instance. Also, looking at a current project, I can almost map the progression of my (hopefully) learning new things and applying them as I got to different parts of the system. All of them work, just a little bit differently.
So, what I’m going to do this time, is use the same patterns and techniques in every subsystem. And if I decide to change a pattern or technique, I am going to require ‘back-porting’ it to all other parts of the system.
I think. I feel pretty confident about it. Today. Right now. Here we go.