It's past 11:00 PM, and I finally found the way back to my room.
After having some problems with the build script, we hit off on what was to become a great day. Build scripts tend to be a hassle when you intend to run them on XP and Vista in English, German and Dutch versions. As always, you can count on JP to find an elegant solution to solve this problem.
We've built a skeleton for a web application today. I'm not going to delve into the details of the implementation, as they are far from finished. The most important part of what we're doing is the principles we're applying. Here are a few I've written down:
Top down development
We first started with a simple MVP implementation of the front end. This allowed us to define some of the functionalities we wanted to have in the application. This of course causes us to be dependant on the asp.net page lifecycle, view state and the whole shebang.
In the afternoon we started refactoring this design to a front controller to handle http requests. The basic idea is shown in this diagram.
Ok, working top-down really means right to left here ;-) What's really fun is that this got implemented in one long afternoon.
The Highlander principle
There can be only one.
Only one constructor doing the work. Other constructors just pass arguments to the 'one'. Seems to be an obvious one, but I admit to have sinned repeatedly against it.
public class FrontController : IFrontController
{
private readonly ICommandRegistry command_registry;
public FrontController():this(new CommandRegistry())
{
}
public FrontController(ICommandRegistry command_registry) {
this.command_registry = command_registry;
} ...}
Source control good habits
Update - Merge - Add - Test - Commit
A simple habit I find myself breaking a lot. Having someone spell it out explicitly is a good thing.
Last but not least: The JP Principle
Always remind JP to start recording. Always remind JP to stop recording.
No need to record with camtasia when we're out to lunch ;-)
That's it for today, I'm off to sleep now. Good night.