Какие подходы предпринимают люди (если они есть) при управлении взрывом guard clause в ваших классах? Например:
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 ....
}
В проекте, над которым я сейчас работаю, есть много классов, у которых есть аналогичный набор защитных предложений для общедоступных методов.
Мне известны кодовые контракты .NET 4.0, но это не вариант для нашей команды на данный момент.