quando si implementano/utilizzano metodi che restituiscono o funzionano con istanze di oggetti, qual è l'approccio più elegante per verificare i parametri della funzione?Il modo migliore per verificare i parametri delle funzioni: Verifica null o try/catch
metodo da chiamare:
someType GetSomething(object x)
{
if (x == null) {
return;
}
//
// Code...
//
}
o meglio:
someType GetSomething(object x)
{
if (x == null) {
throw new ArgumentNullException("x");
}
//
// Code...
//
}
metodo di chiamata:
void SomeOtherMethod()
{
someType myType = GetSomething(someObject);
if (someType == null) {
return;
}
}
o meglio:
void SomeOtherMethod()
{
try {
someType myType = GetSomething(someObject);
} catch (ArgumentNullException) {
}
}
Quando si sfogliano domande simili, il motivo per non utilizzare try/catch è la prestazione. Ma IMHO il try-catch sembra solo meglio :).
Quindi, da che parte è più "elegante"?
Avere funzioni che valuteranno input non nulli e restituire null per input nulli, è spesso uno schema utile. In alcuni casi, il pattern Null Object può essere più bello, ma può essere difficile da implementare con i generici. – supercat