ブールフィールドの場合、そのゲッター/セッターの命名規則は何ですか?


178

例えば。

boolean isCurrent = false;

そのゲッターとセッターを何と呼びますか?


2
私はあなたがJavaBeansを参照していると思います。その場合、@ Jigar Joshiの答えは正しいです。ただし、一般的なゲッター/セッターについて質問する場合、唯一の確信は、メソッドにフィールドの名前が含まれ、ゲッターが引数を取らず値を返すことです。セッターは1つの引数を取って値を返さないか、オブジェクト自体を返します。ゲッター/セッターへの別のアプローチの例としてバッファーを参照してください。
Peter Lawrey、2011年

回答:


254

あなたが持っていると仮定します

boolean active;

アクセサメソッドは

public boolean isActive(){return this.active;}

public void setActive(boolean active){this.active = active;}

こちらもご覧ください


9
ブール値のゲッター名が具体的にカバーされているSunのコード規約のセクションを指摘していただけませんか?見つかりませんでした。
Konstantin Pelepelin 2017年

4
という名前のブールファイルがありますが、 ゲッターメソッドとセッターメソッドhasCustomNameの名前は何ですか?であると良いですか?setHasCustomName[setter]hasCustomName[getter]
ハディ

@Hadiは、変数に「customerName」という名前を付け、そのためのゲッターnセッターを生成します。予想されるゲッターとセッターは次のとおりです public boolean isCustomerName(){return this.customerName;} public void setCustomerName(boolean customerName){this.customerName= customerName;}
Assegd

1
カスタム名から顧客名にどのように取得しましたか?;)
Kartik Chugh

1
@Assegd "customerName"または "customName"に名前を付けると混乱を招き、ブール型であることを示しません。変数を見ると、名前が含まれているはずです。この場合、 "hasCustomName" IMOと呼ばれる必要があります。
ネイサン

83

http://geosoft.no/development/javastyle.html#Specific

  1. is ブール変数とメソッドには接頭辞を使用する必要があります。

    isSetisVisibleisFinishedisFoundisOpen

これは、SunがJavaコアパッケージに使用するブールメソッドと変数の命名規則です is接頭辞を使用すると、ステータスやフラグなどの不正なブール名を選択するという一般的な問題が解決されます。isStatusまたはisFlagは単に適合せず、プログラマーはより意味のある名前を選択する必要があります。

ブール変数のセッターメソッドには、次のようにプレフィックスを設定する必要があります。

void setFound(boolean isFound);

isプレフィックスにはいくつかの選択肢があり、状況によってはよりよく適合します。これらは、プレフィックスがあり、することができ、プレフィックスする必要があります。

boolean hasLicense(); 
boolean canEvaluate(); 
boolean shouldAbort = false;

7
では、ブールプロパティがある場合hasData、セッターはどのようになりますか?間違いなく、setData(bool hasData)私にはひどく間違っているように見えます...
フランツB.

7
@FranzB。私はsetHasData(...)を使用したい
user362178

2
JavaBeansのspecifcationを次のしたい人のために、と思われるhascanshould接頭辞は仕様の一部ではありません。JavaBeans仕様1.01セクション8.3を参照してください。
VCD

@アンドリューこんにちは。変数で 'is'プレフィックスを使用し、その変数の値をjsファイルからデータに送信すると、常に値がfalseになります。そして、「is」プレフィックスを削除すると、それは完全に正常に機能します。その理由は何でしょうか?前もって感謝します。
Me_developer

1
セッターは単純です。ゲッターが使用しboolean isIsCurrent(){...}なければならなかったため、オブジェクトをデシリアライズするために使用されるフレームワークがに不満を言っていましたgetter not found for property isCurrent
Maurizio Lo Bosco

67

というフィールドのisCurrent場合、正しいゲッター/セッターの命名はsetCurrent()/ isCurrent()(少なくともEclipseが考えていることです)です。これは非常に混乱しやすく、主な問題にさかのぼることができます。

そもそもフィールドを呼び出さないでくださいisCurrent Isは動詞であり、動詞はオブジェクトの状態を表すには不適切です。代わりに形容詞を使用すると、突然あなたのゲッター/セッター名がより意味をなすようになります:

private boolean current;

public boolean isCurrent(){
    return current;
}

public void setCurrent(final boolean current){
    this.current = current;
}

4
ブール値がプリミティブでない場合はどうなりますか?ブール値の場合、それはgetである必要がありますか?
2017

2
いいえ、そのようなメソッドはnullを返す可能性があり、それによってNullPointerExceptionが発生します。しかし、私はそもそもブール値を返さないようにしています
ショーンパトリックフロイド

3
@Arun私は、ブール値がプリミティブではなくオブジェクトであるために設定/取得される場合は、代わりに設定/取得する必要があると思います。
Al-Mothafar、2018

1
IntelliJはデフォルトでgetaのBooleanvs isを取得するときに接頭辞を使用しますboolean
ジョクル

1
@jocullとJavaBeans仕様によると、これは正しい動作です
Sean Patrick Floyd

6

それがそうなると信じています:

void setCurrent(boolean current)
boolean isCurrent()

1
私はその慣習が好きですが、慣習はそれほど重要ではありません。最も重要なのは、選択したものに固執することです。
Clement Herreman、2011年

4
@Clementの規則、これらの規則を使用するツールに依存する場合に重要です。JavaBeansは、多くのライブラリ(JSP / JSF / Spring / Groovyなど)で幅広くサポートされている規約です。慣習を破ることは、これらのライブラリが機能する方法を破ることを意味します。
Sean Patrick Floyd

1
@Sean Right、構成よりも規約に依存するフレームワークを除く。この場合、慣例はフレームワークによって課されているため、何も選択しません。良い発言。
Clement Herreman、2011年

5

たぶん、この答えを修正し始める時が来ましたか?個人的に私はのために投票するsetActive()unsetActive()(選択肢があることができsetUnActive()notActive()disable()「のsetActive」以来、等のコンテキストに応じて)を意味しますが、それはあなたがいないすべての回で活性化させます。「setActive」と言うのは直観に反しますが、実際にはアクティブ状態を削除します。

別の問題は、CQRSの方法で具体的にSetActiveイベントをリッスンできないことです。「setActiveEvent」をリッスンし、リスナーが実際にアクティブに設定されているかどうかを確認する必要があります。またはもちろん、呼び出すときにどのイベントを呼び出すかを決定しますsetActive()が、それは関心の分離の原則に反します。

これについては、Martin FowlerによるFlagArgumentの記事をよく読んでください。http://martinfowler.com/bliki/FlagArgument.html

しかし、私はPHPの出身であり、この傾向がますます採用されているのを目にしています。これがJava開発にどれだけ役立つかはわかりません。


-1
private boolean current;

public void setCurrent(boolean current){
    this.current=current;
}

public boolean hasCurrent(){
    return this.current;
}

3
現在何がありますか?hasBOや、なんらかの処理が必要なサービスにはPOJOに使用されていると思いますis。回答についての説明を追加してください。
Al-Mothafar、2018

-3
Setter: public void setCurrent(boolean val)
Getter: public boolean getCurrent()

ブール値の場合も使用できます

public boolean isCurrent()

11
OPがブール値についての質問を述べているからです。接頭辞が「get」のゲッターは、ブール値には使用できません(読み取り:すべきです)。
ハロルド

-4

セッターとして、どのように:

// setter
public void beCurrent(boolean X) {
    this.isCurrent = X;
}

または

// setter
public void makeCurrent(boolean X) {
    this.isCurrent = X;
}

これらのネーミングがネイティブの英語話者にとって意味があるかどうかはわかりません。


1
彼らは本当に
意味をなさない

しかし、いくつかの属性については音声的に多分有望であるように
思われ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.