Quali approcci le persone adottano (se esistono) nella gestione dell'esplosione guard clause nelle classi? Per esempio:Clausole di protezione refactoring
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 ....
}
Nel progetto che sto attualmente lavorando su Ci sono molte classi che hanno un simile insieme di clausole di guardia sui metodi pubblici.
Sono a conoscenza dei Contratti di codice .NET 4.0, tuttavia non è un'opzione per il nostro team al momento.
Stavo semplicemente postando la stessa cosa. L'unico problema è che pone questo metodo all'inizio della traccia dello stack rispetto al metodo di origine in alto, non che sia così enorme. Questo schema potrebbe ovviamente essere utilizzato per diversi tipi per controllare un intervallo di valori, ecc ... –
Sì, questo è l'unico problema che ho mai avuto con questo.Anche se è abbastanza facile trovare il metodo di chiamata originale. –
Questa è essenzialmente la stessa cosa delle classi che imitano i contratti di codice. –