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.