What approaches do people take (if any) in managing guard clause explosion in your classes? For example:
public void SomeMethod<T>(string var1, IEnumerable<T> items, int count)
{
if (string.IsNullOrEmpty(var1))
{
throw new ArgumentNullException("var1");
}
if (items == null)
{
throw new ArgumentNullException("items");
}
if (count < 1)
{
throw new ArgumentOutOfRangeException("count");
}
... etc ....
}
In the project that I am currently working on there are many classes that have a similar set of guard clauses on the public methods.
I am aware of the .NET 4.0 Code Contracts however this is not an option for our team at the moment.