2015-05-17 3 views
3

Я читаю через библиотеку Гуавы, и я продолжаю нарваться методами, которые выглядят примерно так:Разница между методом геттера и методом, который возвращает состояние переменной экземпляра?

@Override public int size() { 
    return size; 
} 

Какая разница (стратегически, условно, и т.д.) между выше и следующим?

@Override public int getSize() { 
    return size; 
} 

Или нет никакой разницы? Это просто сокращение?

+0

Getters могут использоваться инструментами, которые обрабатывают JavaBeans, например язык выражений (EL) в JSP. – Pshemo

+0

Таким образом, вы подтверждаете мое собственное предположение, что последнее более условно. Но что, если таковые имеются, являются преимуществами первого? – pgblu

+0

@pgblu Похоже, что это более предпочтительная вещь, вероятно, зависит от человека, написавшего код. Он также может отличаться, если ваша компания или организация имеет руководство по стилю кода, для этого может потребоваться префикс 'get_' –

ответ

3

В одной форме не используется JavaBeans conventions. Функционально говоря, системы, которые ожидают, что вы будете следовать этим соглашениям, не будут работать или быть очень громоздкими для настройки, если вы используете нетрадиционные геттеры/сеттеры для ваших бобов, но если вы не, то нет никакой реальной разницы.

С гуавой имеет много коллекций, а интерфейс Collection фактически определяет a size() method, моя кишка говорит мне, что гуавы более склонны следовать интерфейсу Collection чем JavaBeans конвенции.

1
  • С точки зрения производительности нет разницы.
  • С точки зрения читаемости они также похожи, но getAttribute больше говорит о том, что этот метод делает (size может означать, что нам нужно сделать некоторые дополнительные расчеты, добытчиками в большинстве случаев просто возвращает значение).
  • Но я подозреваю, что основная причина, по которой люди склонны называть свои методы как get/set ..., должна позволить их классу стать надлежащим JavaBean, который будет надлежащим образом обработан инструментами, использующими JavaBeans, например Expression Language.

В любом случае, о вашем примере. Я подозреваю, что с List с не должны рассматриваться как JavaBean s нет необходимости возвращать size с getSize(), так что просто size().

Смежные вопросы