Witam. Chciałbym się dowiedzieć jakie jest wasze podejście do modyfikacji obiektu wewnątrz metody. Załóżmy, że mamy klasę:
class CalcModel {
private long timeInActiveInMillis;
private long timeInPauseInMillis;
private int percentInActive;
private int percentInPause;
// inne zmienne i gettery, settery
}
Mam też metodę, która wykonuje obliczenia na tym obiekcie modyfikując jego właściwości, jednak ta metoda nic nie zwraca.
public void calculate(CalcModel calcModel) {
// tutaj wykonujemy różne operacje na modelu, którego go modyfikują, np.
calcModel.setTimeInActiveInMillis(millis);
}
Czy takie podejście jest dobre czy lepiej zmodyfikować metodę aby coś zwracała?
public CalcModel calculate(CalcModel calcModel) {
// tutaj wykonujemy różne operacje na modelu, którego go modyfikują, np.
calcModel.setTimeInActiveInMillis(millis);
return calcModel;
}
Może operować na kopii obiektu w metodzie a zwróconą wartość przypisać do właściwego obiektu?
public CalcModel calculate(CalcModel calcModel) {
CalcModel modifiedCalcModel = new CalcModel(calcModel) // lub calcModel.copy();
// tutaj wykonujemy różne operacje na modelu, którego go modyfikują, np.
modifiedCalcModel.setTimeInActiveInMillis(millis);
return modifiedCalcModel;
}
a potem:
calcModel = calculate(CalcModel calcModel);
Jakie jest waszym zdaniem najlepsze podejście do takiego zagadnienia? Modyfikować przekazany argument i nic nie zwracać z metody? Modyfikować przekazany argument i go następnie zwracać? Czy może operować na kopii przekazanego argumentu a dopiero zwracany wynik po obliczeniach przypisywać do właściwego obiektu?