I recently stumbled across this entry in the google testing blog about guidelines for writing more testable code. I was in agreement with the author until this point:
If you are using switch statements everywhere you run into the possibility that when upgrading you miss one place thats needs an update.