Ogni interfaccia che offri a clienti esterni ti dà delle restrizioni. Ad esempio, se hai un metodo
public double computeMean(double[] values) {
...
}
Ti stai promettendo di accettare double[]
di matrici, ma se consegnassi il codice ai clienti e realizzi improvvisamente che ArrayList<Double>
sarebbe meglio? E forse non sai se ci sono clienti che chiamano il tuo metodo, quindi non puoi semplicemente cambiarlo in ArrayList.
Se è pubblico e values
è già noto alla classe, non hai bisogno dei parametri. Questo ti dà la libertà di cambiare da double[]
a quello che vuoi, senza cambiare la tua interfaccia.
Se si tratta di un metodo privato, non hai bisogno dei parametri, sarebbero codice di codice perché già conosci i valori come hai detto.
Se vuoi una funzione veramente generica che non dipenda affatto dalla classe (il che significa che non c'è uno stato da tenere traccia di) puoi creare un metodo static
che ottiene tutte le informazioni di cui ha bisogno dai parametri, se non tieni alcun stato nella tua classe in assoluto non hai nemmeno bisogno di un'istanza di questa classe. Come in Java Collections.sort (...).
Quindi dipende dai tuoi clienti se dovresti aggiungere i parametri.