Occasionalmente mi imbatto in metodi in cui uno sviluppatore ha scelto di restituire qualcosa che non è fondamentale per la funzione. Voglio dire, quando guardo il codice, a quanto pare funziona altrettanto bene di void
e dopo un momento di riflessione, chiedo "Perché?" Ti sembra familiare?
A volte sono d'accordo che molto spesso è meglio restituire qualcosa come bool
o int
, piuttosto che fare solo un void
. Non sono sicuro, però, nel quadro generale, dei pro e dei contro.
A seconda della situazione, restituire un int
può rendere consapevole il chiamante della quantità di righe o oggetti interessati dal metodo (ad es. 5 record salvati in MSSQL). Se un metodo come "InsertSomething" restituisce un valore booleano, posso avere il metodo progettato per restituire true
in caso di successo, altrimenti false
. Il chiamante può scegliere di agire o meno su tali informazioni.
D'altra parte,
- Può portare a uno scopo meno chiaro di una chiamata al metodo? La cattiva codifica mi costringe spesso a ricontrollare il contenuto del metodo. Se restituisce qualcosa, ti dice che il metodo è di un tipo che ha per fare qualcosa con il risultato restituito.
- Un altro problema sarebbe, se l'implementazione del metodo ti è sconosciuta, che cosa ha deciso lo sviluppatore di restituire che non è una funzione critica? Certo che puoi commentarlo.
- Il valore restituito deve essere elaborato, quando l'elaborazione può essere terminata nella parentesi chiusa del metodo.
- Cosa succede sotto il cofano? Il metodo chiamato ha ottenuto
false
a causa di un errore generato? O ha restituito false a causa del risultato valutato?
Quali sono le tue esperienze con questo? Come agiresti su questo?