Использование getters () или прямой доступ к полю внутри POJO? - PullRequest
2 голосов
/ 09 октября 2009

Учитывая, что простой POJO действительно имеет значение или возможны побочные эффекты при использовании одного из следующих:

total = getPriorAmount() + getCurrentAmount();

OR

total = this.priorAmount + this.currentAmount;

При использовании в POJO.

Ответы [ 4 ]

7 голосов
/ 09 октября 2009

Всегда есть побочные эффекты: -)

В этом случае это может быть простой POJO сейчас . Но через 2 недели (месяц, годы) кто-то может добавить некоторую условную логику в ваши методы получения, и getCurrentAmount() может больше не совпадать с this.currentAmount (последнее может быть последним известным «кэшированным» значением, например, и getter метод может его пересчитать).

Вот почему всегда полезно кодировать интерфейс, даже если интерфейсом в этом случае является сам объект (например, его публичные методы получения).

0 голосов
/ 09 октября 2009

К сожалению, Java не поддерживает принцип унифицированного доступа (другие языки, такие как C #, Scala и Ruby, делают), и поэтому мы застряли с уродливым и громоздким синтаксисом получения / установки.

0 голосов
/ 09 октября 2009

Как правило, нет, это не имеет значения.

Я бы использовал второй пример, поскольку он устраняет косвенность, и вы точно знаете, к какому значению вы обращаетесь. Позже вы можете решить, что хотите выполнить дополнительное вычисление значения перед его возвратом, тем самым изменив значение метода getter. (Хотя в этом случае вам следует создать новый метод получения, который возвращает новое значение ... но, допустим, вы устали и просто случайно добавили строку в тот же метод получения.) Теперь вы получите значение, которое вы могли бы или теперь может ожидать. Если это может быть то, что вы хотите, и вы хотите, чтобы это было применено ко всему коду, то хорошо, если нет, то у вас есть проблема, или вы получите неправильный результат, не зная об этом.

0 голосов
/ 09 октября 2009

Хотя с эксплуатационной точки зрения есть небольшая разница, я бы сказал, что определенно лучше использовать метод, а не прямую ссылку. Вы никогда не знаете, когда простой код, который вы пишете сегодня, вырастет до такой степени, что прямая ссылка будет нарушена кем-то, делающим что-то более сложное с локальной переменной (кэширование, вызов ее из других данных и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...