次のプライベートメンバーがいる場合:
private int xIndex;
ゲッター/セッターにどのように名前を付ける必要がありますか:
getXindex()
setXindex(int value)
または
getxIndex()
setxIndex(int value)
編集者
getXIndex()
setXIndex(int value);
?
正解は
getxIndex()
setxIndex(int value)
セクション8.8に従ってプロパティとして使用する場合:の推定名の大文字化JavaBeans API仕様 (たとえば、JSPの$ {object.xIndex}を介してアクセスします。
1997年のJavaBeans API仕様 に従って、ThomasEinwallerが説明しているとおりにする必要があります。
private int xIndex;
public int getxIndex() { return xIndex; }
public void setxIndex(int xIndex) { this.xIndex = xIndex; }
これは残念なことです。getxとsetxは単語ではありません。まれに、IntelliJによって生成されたコードでも警告が表示されます。 IntelliJ。したがって、これはJavaBeans仕様に準拠していますが、 メソッドの命名 の規則に違反しています。これがWordまたは頭字語を形成するまれなケースでは、情報が不足します。たとえば、method setiMessage
はおそらく [〜#〜] seti [〜#〜] とは関係ありません。 。 コード品質の唯一の有効な測定値 (1分あたりのWTF)を使用して、これは悪いコードであると評価します。
それはすべて、JavaBeans仕様のこの文に帰着します。
ただし、すべて大文字の名前をときどき使用することをサポートするために、名前の最初の2文字が両方とも大文字であるかどうかを確認し、そうである場合はそのままにします。
これが指すすべての大文字の名前の正確な使用法は、私にはわかりません。 convention によると、フィールド名はキャメルケースにする必要があります。 20年以上前のドキュメントで決定された、型にはまらないフィールド名をサポートするために、型にはまらないメソッド名を生成しているように思われます。
また、ツールでのJavaBeans仕様の圧倒的なサポートのように見えますが、排他的に使用されているわけではないことにも注意してください。例えば。 Kotlinは、上記の例ではxIndex
をプロパティとして認識しません。逆に、Kotlinプロパティvar xIndex = 0
はJavaメソッドgetXIndex
およびsetXIndex
になります。これは、JetBrainsサポートによるとバグのようですが、どのように表示されるかわかりません。重大な変更を加えることなくそれを修正できます。
JavaBeans仕様をサポートする一部のツールは、常にサポートしているわけではありません。たとえば、 Jackson および Swagger Code Generator は、それに準拠するようにパッチが適用されています。 IntelliJはJavaBeans仕様に従ってアクセサーを生成しますが、ドキュメントの example はそれとは異なります。おそらく、人々は標準について知らず、当然、通常のメソッドの命名規則を好むためです。
では、いつJavaBeans仕様に従う必要がありますか?この標準に依存するツールによってアクセサーがプロパティ名を推測する必要がある場合は、それを使用することをお勧めします。たとえば、 Jackson は、アノテーションを使用しない限り、xIndex
およびgetxIndex
メソッドを介してアクセスされるプロパティsetxIndex
に依存します。
いつこの標準を避けるべきですか?私の推奨によると:コードを人間が読んで理解する必要があるのはいつですか。命名方法が有益ではないときに適切なキャメルケースを使用しないため。
私のやり方でそれを行う場合は、通常の命名規則、つまりgetXIndex
とsetXIndex
を使用します。しかし、物事の状態を考えると、私が見る最良の解決策は@vaxquisによって提案されています:
フィールドに「indexX」などの名前を付ければ、問題は解決します...複雑にしすぎないでください-setxIndexがBeansの正しい方法であっても、setxIndexという名前のメソッドを使用すると、何も返さずにコードのWTF係数が増加します。
JavaBeans仕様に関するコメントは、仕様自体に従って、Java-beans @ Java.Sun.comに送信する必要があります。
する必要があります:
getXIndex()
setXIndex(final int xIndex)
メソッドは動詞で、大文字と小文字が混在し、各内部単語の最初の文字が大文字になっている必要があります。
正解は:
getXIndex();
setXIndex(int value);
Java SE8 Oracle Certification Associate: ここに画像の説明を入力してください からのスクリーンショット
パッケージJava.beansのIntrospector.decapitalizeを使用する必要があります。これは、Javaルールに準拠しているため、問題はありません。
Eclipse ideは、次のようにセッターとゲッターを自動的に生成します。
getxIndex()
setxIndex(int value)
これは、Java BeansAPI仕様に準拠しています。