Хотя вы говорите, что оба метода делают одно и то же, это не обязательно так, поскольку ваш первый метод вычисляет результат и возвращает его, второй метод вычисляет результат, но назначает его состоянию в текущем объекте.
Давайте рассмотрим следующий класс:
public class Dinner {
private Meal meal;
public Dinner(Meal meal) {
this.meal = meal;
}
public Meal getMeal(Meal meal) {
return meal;
}
public setMeal(Meal meal) {
this.meal = meal;
}
}
Здесь setMeal
изменило внутреннее состояние объекта, но оно не имеет возвращаемого значения. С другой стороны, getMeal
возвращает текущее состояние объекта, но не изменяет его.
Подумайте, что именно вам нужно в вашем случае использования: если вы хотите изменить внутренние данные объекта, тогда идите вторым путем. Если вы хотите вернуть, например, результат вычисления или внутреннего состояния, верните что-нибудь вызывающему, чтобы он мог с ним работать.
В конце концов, это всего лишь некоторые идеи, реализация конкретной проблемы всегда сопровождается множеством различных возможностей, поэтому на этот вопрос нет совершенного ответа.