¿Qué enfoques toman las personas (si corresponde) en la gestión de explosión de guard clause en sus clases? Por ejemplo:Refactoring Guard Clauses
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 ....
}
En el proyecto que estoy trabajando actualmente hay muchas clases que tienen un conjunto similar de cláusulas de guardia en los métodos públicos.
Conozco los contratos de código de .NET 4.0, pero esta no es una opción para nuestro equipo en este momento.
Estaba publicando lo mismo. El único problema es que coloca este método en la parte superior del seguimiento de pila frente al método de origen en la parte superior, aunque no es tan grande. Este patrón obviamente se podría usar para diferentes tipos para verificar un rango de valores, etc ... –
Sí, ese es el único problema que he tenido con él.Aunque es bastante fácil encontrar el método de llamada original. –
Esto es esencialmente lo mismo que las clases que imitan los contratos de código. –