web-dev-qa-db-ja.com

Java)のゲッター/セッターの命名規則

次のプライベートメンバーがいる場合:

private int xIndex;

ゲッター/セッターにどのように名前を付ける必要がありますか:

getXindex()
setXindex(int value)

または

getxIndex()
setxIndex(int value)

編集者

getXIndex()
setXIndex(int value);

34
Simon

正解は

getxIndex()
setxIndex(int value)

セクション8.8に従ってプロパティとして使用する場合:の推定名の大文字化JavaBeans API仕様 (たとえば、JSPの$ {object.xIndex}を介してアクセスします。

35

1997年のJavaBeans API仕様 に従って、ThomasEinwallerが説明しているとおりにする必要があります。

private int xIndex;
public int getxIndex() { return xIndex; }
public void setxIndex(int xIndex) { this.xIndex = xIndex; }

これは残念なことです。getxsetxは単語ではありません。まれに、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に依存します。

いつこの標準を避けるべきですか?私の推奨によると:コードを人間が読んで理解する必要があるのはいつですか。命名方法が有益ではないときに適切なキャメルケースを使用しないため。

私のやり方でそれを行う場合は、通常の命名規則、つまりgetXIndexsetXIndexを使用します。しかし、物事の状態を考えると、私が見る最良の解決策は@vaxquisによって提案されています:

フィールドに「indexX」などの名前を付ければ、問題は解決します...複雑にしすぎないでください-setxIndexがBeansの正しい方法であっても、setxIndexという名前のメソッドを使用すると、何も返さずにコードのWTF係数が増加します。

JavaBeans仕様に関するコメントは、仕様自体に従って、Java-beans @ Java.Sun.comに送信する必要があります。

8
Love

する必要があります:

getXIndex()
setXIndex(final int xIndex)
4
Samuel Yung

メソッドは動詞で、大文字と小文字が混在し、各内部単語の最初の文字が大文字になっている必要があります。

1
ayush

正解は:

getXIndex();
setXIndex(int value);

Java SE8 Oracle Certification Associate: ここに画像の説明を入力してください からのスクリーンショット

0
Mahmoud Turki

パッケージJava.beansのIntrospector.decapitalizeを使用する必要があります。これは、Javaルールに準拠しているため、問題はありません。

0

Eclipse ideは、次のようにセッターとゲッターを自動的に生成します。

getxIndex()
setxIndex(int value)

これは、Java BeansAPI仕様に準拠しています。

0
Bipin Thakur