Вызов геттера несколько раз или один раз и присвоение переменной? - PullRequest
13 голосов
/ 12 мая 2010

предположим, у меня есть класс как:

public class Age {

    private int age;

    public int getAge() {
       return this.age;
    }

}

В моем основном классе я много раз вызываю метод getAge().

Итак, я хотел знать, желательно ли вызывать так много раз или вызывать один раз, назначить его какой-либо переменной и использовать эту переменную.

Что лучше и почему?

Ответы [ 12 ]

0 голосов
/ 12 мая 2010

Я думаю, вы не увидите никакой разницы во время выполнения - при условии, что вы не создадите более одного класса Age.

0 голосов
/ 12 мая 2010

Для такого простого случая я бы выбрал тот, который выглядит лучше всего с точки зрения кода.

В некоторых случаях рекомендуется один раз позвонить и прочитать сохраненное возвращаемое значение, например, в

for (int i = 0; i < list.size(); i++)
    doSomethingThatDoesNotAffectSizeOfList();

, поскольку у компилятора могут возникнуть проблемы с определением, влияет ли тело цикла на размер списка. Правильно реализованный список всегда должен легко определять его размер, но в других примерах (или при работе с плохо реализованными коллекциями) он может быть хуже.

В общем случае, если метод сложен в вычислительном отношении, вы можете использовать memoization , что в основном означает, что вы кэшируете уже вычисленные значения ввода / вывода.

Запомненная функция «запоминает» результаты, соответствующие некоторому набору определенных входных данных. Последующие вызовы с запомненными входами возвращают запомненный результат, а не пересчитывают его, тем самым устраняя первичную стоимость вызова с заданными параметрами из всех, кроме первого вызова функции с этими параметрами.

Эта методика позволяет использовать метод "сохранить возвращаемое значение для эффективности" в самом методе, что облегчает его обслуживание ...

...