Sto davvero cercando di capire le migliori pratiche per il codice riutilizzabile che è facilmente debug. Mi sono imbattuto in una pratica comune tra sviluppatori che non ho ancora capito bene.Controllo per null in Constructor
public MyConstructor(Object myObject)
{
if (myObject == null)
throw new ArgumentNullException("myObject is null.");
_myObject = myObject;
}
Sembra quasi superfluo effettuare questo controllo. Ma penso che sia perché non capisco completamente quali sono i vantaggi di fare questo controllo. Sembra che un'eccezione di riferimento null verrebbe comunque generata? Probabilmente ho torto, mi piacerebbe davvero sentire alcune riflessioni su di esso.
Grazie.
Cosa si sta facendo non è necessario, è possibile verificare per assicurarsi che prima di fare riferimento all'oggetto, che non fosse nullo. Naturalmente convalidare ciò che userete quando il vostro oggetto è intializzato è un approccio molto valido. –
@Ramhound: questo è un approccio comune quando si utilizzano quadri DI come StructureMap in cui non si ha necessariamente il controllo diretto su ciò che viene passato al costruttore. Se la tua classe è inutile senza 'myObject' e questo è l'unico posto per inizializzarlo, allora ha senso gettare le eccezioni il prima possibile in modo da conoscerle. In un'applicazione web a esecuzione prolungata potresti non essere a conoscenza del problema fino a quando qualcuno non chiama un metodo che richiede l'oggetto. –