Occasionalmente mi imbatto in metodi in cui uno sviluppatore ha scelto di restituire qualcosa che non è critico per la funzione. Voglio dire, quando guardo il codice, apparentemente funziona altrettanto bene come void
e dopo un momento di riflessione, chiedo "Perché?" Questo suona familiare?
A volte concordo sul fatto che molto spesso è meglio restituire qualcosa come un bool
o int
, piuttosto che semplicemente fare un void
. Non sono sicuro però, in generale, dei pro e dei contro.
A seconda della situazione, la restituzione di an int
può rendere il chiamante consapevole della quantità di righe o oggetti interessati dal metodo (ad esempio, 5 record salvati in MSSQL). Se un metodo come "InsertSomething" restituisce un valore booleano, posso avere il metodo progettato per restituire in true
caso di successo, altrimenti false
. Il chiamante può scegliere di agire o meno su tali informazioni.
D'altro canto,
- Può portare a uno scopo meno chiaro di una chiamata di metodo? Una codifica errata spesso mi costringe a ricontrollare il contenuto del metodo. Se restituisce qualcosa, ti dice che il metodo è di un tipo che si deve fare qualcosa con il risultato restituito.
- Un altro problema potrebbe essere, se l'implementazione del metodo non ti è nota, cosa ha deciso di restituire lo sviluppatore che non è fondamentale per la funzione? Ovviamente puoi commentarlo.
- Il valore restituito deve essere elaborato quando l'elaborazione potrebbe essere terminata nella parentesi di chiusura del metodo.
- Cosa succede sotto il cofano? Il metodo chiamato è stato ricevuto a
false
causa di un errore generato? O è tornato falso a causa del risultato valutato?
Quali sono le tue esperienze con questo? Come agiresti su questo?
void
almeno consente allo sviluppatore di sapere che il valore restituito dal metodo è irrilevante; fa un'azione, piuttosto che calcolare un valore.