Sono contrario all'idea di difendere ciecamente contro null per ogni campo disponibile nel codice e all'interno di ciascun metodo.
Il seguente aiuto me decidere su dove per controllare contro i valori nulli:
1- Chi sarà invocano i metodi?
Se un metodo è privato e si ha il controllo su come viene acceduto, non vedo che abbia senso proteggersi dai controlli null a meno che non faccia parte della logica del metodo aspettarsi valori nulli. Se un metodo è esposto al pubblico (come un'API), ovviamente i controlli nulli dovrebbero essere una grande preoccupazione.
2- Software Design:
immagine che hai sta chiamando method1(fromAnimalToString(animal));
e per qualche motivo fromAnimalToString()
mai restituisce null (Anche se potrebbe restituire una stringa vuota invece).
Poi in tal caso, non avrebbe senso per controllare animal != null
in Method1() 's corpo
3- Testing:
in ingegneria del software, è quasi impossibile per testare tutti i possibili scenari che possono sempre eseguire. Tuttavia, prova scenari normali e alternativi e assicurati che il flusso sia come previsto.
Non sarebbe più semplice controllare sempre per vedere se il riferimento all'oggetto è 'null'? Puoi anche fare un altro percorso e assicurarti che l'oggetto che usi non possa essere nullo. –
Per * ogni * riferimento a un oggetto? : o Alcuni di essi non saranno mai nulli (sono impostati nel costruttore). –
Anche se non stai usando i Contratti di codice, dovresti scrivere clausole di salvaguardia all'inizio dei tuoi metodi. – jason