The problem with writing defensive fail early code, it doesn't take long before methods are 70% argument checking, 30% logic:
Code contracts can be a great way to move code out of the method body, but how can you clean up the code just through traditional refactoring? For the last few projects I've worked on, I've been using a small helper class that abstracts all the conditional code out, leaving just a single line call for each check you need.
String parameter checking can wrap up even more conditional logic. The following code throws an ArgumentNullException if the string is null, or just an ArgumentException if it is empty or whitespace.
Get the code from GitHub.