Ho un servizio di Windows con un'interfaccia fluente come questa:
aRequest = Repository.getRequest()
.createProcess()
.validate();
A volte getRequest()
potrebbe restituire un valore null
e ciò causerebbe un errore in createProcess()
. Potrei dividere banalmente getRequest()
da createProcess()
, ma se non lo farei in che modo dovrei seguire, quale è il modo migliore:
-
Verifica se la richiesta (
this
) è nullo e nel caso restituisce null:if(this is null) return null
Potrei fare questo controllo in tutti i metodi accanto a
getRequest()
. Alla fineaRequest
sarànull
. -
Genera un'eccezione se il metodo
createProcess()
riceve un valorenull
:if(this is null) throw new NullRequestException();
PRO del secondo modo: solo il secondo metodo richiede un controllo, indipendentemente dal numero di metodi nella catena.
CON del primo modo: ogni metodo nella catena ha bisogno di un controllo
Ora la domanda: la seconda è un cattivo uso del concetto di eccezione, poiché potrebbe essere normale l'assenza di richiesta a volte?