Ho appena fatto una revisione del codice in cui mi sono imbattuto in un metodo del genere:
private void FindMinAndMax(double[] values)
{
// Some algorithm that results in two class vars being assigned:
_min = ...
_max = ...
}
(Dopo essere ritornati, il codice chiamante utilizza questi due valori in vari calcoli: il codice chiamante chiama quindi altri metodi privati che utilizzano questi due valori).
Personalmente questo metodo non mi piace perché non sapresti mai che questi parametri vengono impostati solo guardando il codice chiamante (infatti il programmatore aveva persino messo un commento accanto alla chiamata del metodo per dire "Questo imposta _min e _max ", rinforzando la mia opinione!). La mia raccomandazione era di utilizzare i parametri "out" o di restituire una tupla contenente i due valori.
Mi sono chiesto se ci sono delle linee guida / pattern / migliori pratiche quando si tratta di metodi che assegnano o modificano le variabili a livello di classe?