Diversi libri di programmazione suggeriscono che i metodi non devono restituire valori di null
(ad esempio, Codice pulito). Invece di restituire null
i valori predefiniti (0 o stringa vuota o oggetto vuoto) devono essere restituiti o deve essere generata un'eccezione. Questo è consigliato per evitare molti controlli di != null
o per evitare NullPointerException
.
Davvero non capisco come possa essere d'aiuto. Se restituisci un valore predefinito, devi fare != DEFAULT
controlli; più oltre, il valore predefinito potrebbe significare qualcosa (come 0 per un importo del credito). Lanciare un'eccezione specifica non vale la pena, perché se non gestisci bene il tuo codice, viene comunque generata un'eccezione - NullPointerException
.
Ci ho pensato su questo quando ho trovato un bug causato da un metodo che restituiva un oggetto vuoto (ad esempio new MyBean()
) invece di restituire null
. Il codice non funzionava in modo funzionale e i registri non avvisavano nulla, quindi il rilevamento e il fissaggio non erano così facili; con null
a NullPointerException
sarebbe stato gettato in modo da individuare e correggere il bug sarebbe stato banale.
L'unico caso in cui ha senso per me restituire un valore predefinito invece di restituire null
è quando si restituiscono matrici / raccolte; qui di solito vengono consumati for each element in collection
quindi se è vuoto non accade nulla ma se è null
NPE viene lanciato.