17

.jsp ページで EL を使用している Webapp で少し驚きました。

ブール値のプロパティを追加し、ブール値に「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 ()に手動で置き換えると、すべてが正常に機能しました。

ここで 2 つの質問があります。

  1. ブール値のプロパティの名前を「is」で始めるのは悪いことですか?

  2. それが悪いかどうかにかかわらず、IntelliJ は getIsDynamic の代わりに isDynamic という名前のメソッドを自動生成することで、ここで間違いを犯しませんでし?

4

4 に答える 4

29
于 2010-05-31T17:32:57.627 に答える
11

isDynamic() is normally the way to go as a boolean getter.

public boolean isDynamic() {
  return dynamic;
}

in your template you can use:

<c:if test="${dynamic}">
 ...
</c:if>
于 2010-05-31T17:33:36.723 に答える
1

プロパティに「is」を付けずに名前を付け、アクセサに「is」を付けるのが一般的です。ただし、IDEが生成するものを確実に変更し、「getIsDynamic()」をアクセサーにすることができます。

于 2010-05-31T17:31:09.583 に答える
1

Since in Java you don't have clash between variable names and method it would say that it's ok to have an isDynamic() method that returns if isDynamic is true. Or at least this is good if the "dinamicity" is actually a real attribute of the object and not just a boolean value that you need.

For example verbose is a boolean value that is usually not an attribute of an object, so having a isVerbose() method would be a bad idea (unless it's a Console class).

Having a boolean called isDynamic is a good expressive idea. It suggests you that the variable is a bool without any additional effort.

于 2010-05-31T17:33:21.423 に答える