Java: как назвать булево свойства

У меня просто было немного удивления в Веб-приложении, где я использую EL на .jsp страницах.

Я добавил булево свойство и поцарапал мою голову, потому что я назвал булевскую переменную "isDynamic", таким образом, я мог записать это:

<c:if test="${page.isDynamic}">
   ...
</c:if>

Который я нахожу легче читать, чем:

<c:if test="${page.dynamic}">
   ...
</c:if>

Однако .jsp не удалось скомпилировать с ошибкой:

javax.el.PropertyNotFoundException: Property 'isDynamic' not found on type com...

Я оказываюсь своим IDE (и мне потребовалось некоторое время для замечания его), генерируя метод считывания, генерировал названный метод:

isDynamic()

вместо:

getIsDynamic()

После того как я вручную заменил isDynamic () getIsDynamic (), все хорошо работало.

Таким образом, у меня есть действительно два вопроса здесь:

  1. это плохо для запуска, имя булево свойства с?

  2. плохо ли это или нет, не сделало IntelliJ, сделал ошибку здесь путем автоматической генерации метода, названного isDynamic вместо getIsDynamic?

16
задан NoozNooz42 31 May 2010 в 17:39
поделиться

4 ответа

  1. Деликатная тема, но в мое мнение плохо. Имя переменной должно обозначать не вопрос, а утверждение. Например. pageIsDynamic , dynamic или dynamicGenerated . Однако для этого нет четкого соглашения о кодировании. Пока вы едины во всем коде, в любом случае это не повредит.

  2. Нет, не было. В спецификации Javabean указано, что разрешено добавлять к логическим именам методов получения префикс is . Обычно предпочтительно выше get . Как и любая другая достойная IDE, IntellIJ просто придерживается этой спецификации. Eclipse и Netbeans будут делать то же самое. Вот отрывок из главы 8.3.2:

8.3.2 Логические свойства

Кроме того, для логических свойств мы разрешаем методу получения соответствовать шаблону:

 public boolean is  ();

Этот метод «is » может быть предоставлен вместо метода «get » , или он может быть предоставлен в дополнение к методу «get » .

В любом случае, если для логического свойства присутствует метод «is » , мы будем использовать метод «is » для чтения свойства ценить. Примером логического свойства может быть:

 public boolean isMarsupial ();
public void setMarsupial (логическое значение m);
27
ответ дан 30 November 2019 в 16:30
поделиться

isDynamic() обычно используется в качестве булева геттера.

public boolean isDynamic() {
  return dynamic;
}

в вашем шаблоне вы можете использовать:

<c:if test="${dynamic}">
 ...
</c:if>
10
ответ дан 30 November 2019 в 16:30
поделиться

Поскольку в Java у вас нет конфликтов между именами переменных и методом, будет сказано, что нормально иметь метод isDynamic () , который возвращает, если isDynamic равно истинно . Или, по крайней мере, это хорошо, если «динамичность» на самом деле является реальным атрибутом объекта, а не просто логическим значением, которое вам нужно.

Например, verbose - это логическое значение, которое обычно не является атрибутом объекта, поэтому использование метода isVerbose () было бы плохой идеей (если только это не ] Консоль класс).

Наличие логического значения isDynamic - хорошая выразительная идея. Это предполагает, что переменная представляет собой bool без каких-либо дополнительных усилий.

1
ответ дан 30 November 2019 в 16:30
поделиться

Более типично называть свойство без "is" и позволить аксессору иметь "is". Однако вы можете изменить то, что генерирует ваша IDE, и сделать аксессором "getIsDynamic()", если вам так понятнее.

1
ответ дан 30 November 2019 в 16:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: