in reply to Further adventures with testing

Further, I've discovered that code that is hard to test is likely to be poorly designed.

This is my experience as well. Not only that, when you prepare for testing, you improve the code. You refactor the code into something better at the easiest time: _when_coding_ it in the first place, when you have everything 100% fresh in your mind.

So, to reiterate (once again) why it's a good thing(tm):

Personally I sometimes find it _easier_ to write-tests-as-you-go, because the code is actually run a little at a time as it grows (as opposed to when the module is finished and in the complex context of the entire program).