15

クラスに「blah」という名前の変数が含まれている場合、標準のゲッター/セッター構文​​は明らかにgetBlah()とsetBlah()です。しかし、isBlahという名前の変数を持つPOJOクラスがある場合、次を使用しますか?

public type getIsBlah() {
  return isBlah;
}

public setIsBlah(type isBlah) {
  this.isBlah = isBlah;
}

それともこれでしょうか?

public type isBlah() {
  return isBlah;
}

public setBlah(type blah) {
  this.isBlah = blah;
}

最初のタイプはPOJO規則に厳密に準拠しているようですが、2番目のタイプは、クラスのゲッター/セッターを作成するように依頼した場合にIntelliJが生成するものです(そして、IntelliJはまだ私を失望させていません:])。では、どちらが好ましい構文ですか?

4

7 に答える 7

20

プロパティを使用する理由の1つは、APIを実装から切り離すことです。言い換えれば、プライベート変数が何と呼ばれるかに縛られていると感じるべきではありません。これは、コードメンテナが読みやすくすること以外に、名前を通知するものではありません。

この場合「タイプ」があればboolean、2番目の形式が正しいと言えます。そうでない boolean場合は、を使用する必要がありますgetXXXが、おそらくは使用しませんgetIsXXX。私にとって、「is」はブール型プロパティと非常に強い対応関係があり、他のコンテキストで使用すると、JavaBeansの規則(他のツールに影響を与える可能性があります)に違反するだけでなく、IMOを誤解させる可能性があります。

于 2009-07-13T08:31:31.610 に答える
4

フィールドの名前は、 JavaBeanの仕様とはまったく関係がないことに注意してください。ゲッター/セッターの名前のみが関係します。

通常、ゲッターの名前はですget<PropertyName>()。代替として許可されるのbooleanはプロパティのみです。is<PropertyName>()

この例では、Beanプロパティ名は、ゲッターを呼び出すときは「Blah」であり、ゲッターを呼び出すときはisBlah()「IsBlah」であることに注意してくださいgetIsBlah()

個人的に私は通常好きisBlah()です。

于 2009-07-13T08:42:06.160 に答える
3

JSTLを使用する場合、「is」構文には1つの大きな問題があります。それは、JSTLELがそれらを認識しないことです。かなりばかげていますが、JSTL ELの設計者は、JavaBeansに準拠しているかどうかのロジックをわざわざチェックしませんでした。

JSTLにフックを与えるためだけに、isBlah()を呼び出すビューレイヤークラスでgetIsBlah()メソッドを記述していることがよくあります。ひどいです。

于 2009-07-13T08:40:06.383 に答える
3

POJOには強力な規則があるとは言えませんが、JavaBeansの場合、2番目の(IntelliJ)例はブール属性の標準であり、他のすべてはを使用しますgetX

于 2009-07-13T08:28:05.737 に答える
2

私もあなたの2番目のオプションを選びます。1つ目は、getIsBlah()言葉が多く冗長なようです。

于 2009-07-13T08:29:10.100 に答える
1

「get」と「is」はどちらも、JavaBeans規則の下で技術的にはまだ受け入れられるため、実際には問題ありません。あなたの「Blah」が実際にどんな言葉であるかに応じて、私はより良いまたはより自然に聞こえる方を選びます。

于 2009-07-13T08:36:59.010 に答える
0

JSTLは、Beanの仕様に従って、isMyBoolがブール値であり、ブール値やその他のオブジェクトではない場合にのみ許可します。(プリミティブvsオブジェクト)。

于 2010-06-22T02:25:45.030 に答える