After spending a few days writing a ton of code and heavily refactoring using TDD and Code Contracts I have to say… Wow!

I know people like to debate the value of TDD, test first etc.  I don’t care what they say – this method rocks.  I found bugs I would have never found any other way (including some product bugs).

Then when you add Code Contracts – double Wow!

At first I thought the Code Contracts might be too much.  They forced me to carefully consider what the behavior of my contracts are.  The more I used them the more I realized that I often was inconsistent in validating parameters or specifying a behavior.

For example, suppose I have a method that accepts a string parameter.

What if it is null?

What if it is string.Empty?

What if it is whitespace i.e. “    “

Specifying the contract on the interface forces me to specify the behavior that I expect all classes that implement the interface to implement.  In a scenario where many different people are going to implement the interface this is invaluable.

Sure it is a little more code.. ok a lot more code.  BUT IT IS CODE THAT WORKS AND I CAN PROVE IT!!!

That is what I really love…