web-dev-qa-db-ja.com

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

例えば。

boolean isCurrent = false;

そのゲッターとセッターの名前は何ですか?

153
user496949

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

boolean active;

アクセサメソッドは

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

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

関連項目

219
Jigar Joshi

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

  1. isプレフィックスはブール変数とメソッドに使用する必要があります。

    isSetisVisibleisFinishedisFoundisOpen

これは、JavaコアパッケージでSunが使用するブール型メソッドと変数の命名規則です。isプレフィックスを使用すると、ステータスやフラグなどの不正なブール名を選択する問題。 isStatusまたはisFlagは単に適合せず、プログラマはより意味のある名前を選択せざるを得ません。

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

void setFound(boolean isFound);

状況によってはより適切なプレフィックスの代替がいくつかあります。これらは、接頭辞としてhas、can、およびshouldです:

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

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

最初はisCurrentと呼ばれるべきではありません。Isは動詞であり、動詞は不適切ですオブジェクトの状態を表します。代わりに形容詞を使用すると、突然ゲッター/セッター名がより意味があります。

private boolean current;

public boolean isCurrent(){
    return current;
}

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

たぶん、この答えを修正し始める時ですか?個人的には、setActive()unsetActive()に投票します(コンテキストに応じて、代わりにsetUnActive()notActive()disable()などにすることができます)常にアクティブにしますが、そうしません。 「setActive」と言うのは直感的なカウンターですが、実際にはアクティブ状態を削除します。

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

これに関する良い読み物は、Martin FowlerによるFlagArgumentの記事です。 http://martinfowler.com/bliki/FlagArgument.html

しかし、私はPHPのバックグラウンドから来ており、この傾向がますます採用されるのを見ています。これがJavaの開発にどれだけ耐えられるかはわかりません。

5

I 信じる それは:

void setCurrent(boolean current)
boolean isCurrent()
5
miku

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

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

または

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

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

0
amekusa
private boolean current;

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

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