web-dev-qa-db-ja.com

Java boolean(疑問符なし)を返すメソッドの命名規則

他の言語のメソッド/関数名の最後に疑問符を使用するのが好きです。 Javaではこれができません。回避策として、Javaでブール値を返すメソッドに名前を付けるにはどうすればよいですか?メソッドの前でishasshouldcanそのようなメソッドに名前を付けるより良い方法はありますか?

例えばcreateFreshSnapshot?

85
letronje

慣例では、名前で質問することです。

JDKにあるいくつかの例を次に示します。

_isEmpty()

hasChildren()
_

そのようにして、名前は最後に疑問符が付いているように読み取られます。

コレクションは空ですか?
これはNode子がいますか?

そして、trueはyesを意味し、falseはnoを意味します。

または、アサーションのように読むことができます:

コレクションは空です。
ノードには子があります

注:
場合によっては、メソッドに_createFreshSnapshot?_のような名前を付けることができます。疑問符がない場合、名前は、メソッドが必要かどうかを確認するのではなく、スナップショットを作成することを意味します。

この場合、あなたが実際に求めていることを再考する必要があります。 isSnapshotExpiredのような名前は、はるかに優れた名前であり、メソッドが呼び出されたときにメソッドが通知する内容を伝えます。このようなパターンに従うことは、より多くの関数を純粋で副作用なしに保つのにも役立ちます。

Java APIでisEmpty()に対して Google検索 を実行すると、多くの結果が得られます。

103
jjnguy

クラスに Java Beans仕様 との互換性を持たせたい場合、リフレクションを利用するツール(例 JavaBuildersJGoodies Binding )がブール値を認識できるようにするゲッターは、getXXXX()またはisXXXX()をメソッド名として使用します。 Java Beans spec:

8.3.2ブールプロパティ

さらに、ブールプロパティの場合、ゲッターメソッドを使用してパターンに一致させることができます。

public boolean is <PropertyName> ();

この「is <PropertyName>」メソッドは、「get <PropertyName>」メソッド、または「get <PropertyName>」メソッドに加えて提供される場合があります。どちらの場合でも、ブールプロパティに「is <PropertyName>」メソッドが存在する場合、「is <PropertyName>”メソッドでプロパティ値を読み取ります。ブールプロパティの例は次のとおりです。

public boolean isMarsupial();
public void setMarsupial(boolean m);
28
Jason S

この回答を確認し、より多くのJavaスタイルの規則を探しているのをさらに助けるために、このリンクを投稿したい

Javaプログラミングスタイルガイドライン

項目14は特に関連があり、isプレフィックスを提案します。

スタイルガイドでは、次のことを提案しています。

isプレフィックスに代わるいくつかの状況があり、状況により適しています。これらはhascanおよびshouldプレフィックス:

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

ガイドラインに従う場合、適切なメソッドの名前は次のようになります。

shouldCreateFreshSnapshot()
23
kommradHomer

失敗する可能性のあるメソッド、つまり戻り値の型としてブール値を指定する場合、接頭辞tryを使用します。

if (tryCreateFreshSnapshot())
{
  // ...
}

他のすべての場合には、is..has..was..can..allows..などのプレフィックスを使用します。

12
codymanix

標準では、プレフィックスとして「is」または「has」を使用します。たとえば、isValidhasChildren

5
BillThor

isは、私が他のどの製品よりも見つけたものです。しかし、現在の状況で理にかなっているものが最善の選択肢です。

2
Skilldrick