他の言語でメソッド/関数名の最後に疑問符を使用するのが好きです。Javaではこれができません。回避策として、Javaでブール値を返すメソッドに他にどのように名前を付けることができますか?使用してis
、has
、should
、can
方法音の前で大丈夫いくつかのケースのために。そのようなメソッドに名前を付けるより良い方法はありますか?
たとえば、createFreshSnapshot?
p
、メソッド名の末尾に常にa を付けます
他の言語でメソッド/関数名の最後に疑問符を使用するのが好きです。Javaではこれができません。回避策として、Javaでブール値を返すメソッドに他にどのように名前を付けることができますか?使用してis
、has
、should
、can
方法音の前で大丈夫いくつかのケースのために。そのようなメソッドに名前を付けるより良い方法はありますか?
たとえば、createFreshSnapshot?
p
、メソッド名の末尾に常にa を付けます
回答:
規約は、名前で質問することです。
以下は、JDKにあるいくつかの例です。
isEmpty()
hasChildren()
こうすると、名前の最後に疑問符が付いているように名前が読み取られます。
コレクションは空ですか?
このノードには子がありますか?
そして、それtrue
はイエスをfalse
意味し、ノーを意味します。
または、アサーションのように読み取ることができます。
コレクションは空です。
ノードには子があります
注:
メソッドにのような名前を付けたい場合がありますcreateFreshSnapshot?
。疑問符がない場合、名前は、メソッドが必要かどうかを確認するのではなく、スナップショットを作成することを意味します。
この場合、実際に何を求めているのかを再考する必要があります。のようなものisSnapshotExpired
ははるかに優れた名前であり、メソッドが呼び出されたときにメソッドが通知する内容を伝えます。このようなパターンに従うことで、より多くの関数を純粋で副作用のない状態に保つことができます。
その場合はGoogle検索のためのisEmpty()
Java APIの中で、あなたは結果の多くを得ます。
isSnapshotExpired
またはそのようなものに名前変更するでしょう。(基準に基づく)
shouldHeartbeat()
メソッドを使用してハートビートメッセージを送信する必要があるかどうかを確認します。
isEmpty()
と考えるのですか?これらの名前を主張または述語と考えると、実際には英語で少し読みやすくなります。hasChildren()
クラスにJava Beans仕様との互換性を持たせたい場合、リフレクションを利用するツール(JavaBuilders、JGoodies Bindingなど)がブールゲッターを、getXXXX()
またはisXXXX()
メソッド名として認識できるようにします。Java Beans仕様から:
8.3.2ブールプロパティ
さらに、ブールプロパティの場合、ゲッターメソッドがパターンに一致することを許可します。
public boolean is
< プロパティ名 >()
;これは、「<さのPropertyName >」この方法は代わりに「GET <設けてもよいのPropertyName >」方法、またはそれが「GET <以外に設けてもよいのPropertyName >」方法。どちらの場合も、ブールプロパティに「is < PropertyName >」メソッドが存在する場合、「is < PropertyName >」メソッドを使用してプロパティ値を読み取ります。ブールプロパティの例は次のとおりです。
public boolean isMarsupial(); public void setMarsupial(boolean m);
public boolean is<PropertyName>();
それがジェネリックのように見えると言うとき、それは混乱しています。
このリンクを投稿したいのですが、この回答を確認して、Javaスタイルの規則を探すための覗き見に役立つ場合があります。
項目「2.13 は、ブール変数とメソッドには接頭辞を使用する必要があります。」特に関連があり、is接頭辞を提案します。
スタイルガイドはさらに提案します:
isプレフィックスにはいくつかの選択肢があり、状況によってはより適合します。これらはしている、ことができますとすべき接頭辞:
boolean hasLicense();
boolean canEvaluate();
boolean shouldAbort = false;
ガイドラインに従っている場合、適切なメソッドの名前は次のようになると思います。
shouldCreateFreshSnapshot()
失敗する可能性のあるメソッド、つまりブール値を戻り値の型として指定する場合は、プレフィックスを使用しますtry
。
if (tryCreateFreshSnapshot())
{
// ...
}
他のすべての場合には、is..
has..
was..
can..
allows..
..のような接頭辞を使用します。
この一般的な命名規則について別の見方をしたいと思います。例:
java.util.Setを参照してください:boolean add(E e)
根拠は次のとおりです。
何らかの処理を行って、 成功したかどうかを報告し ます。
一方でreturn
確かにあるboolean
メソッドの名前が指している必要があります完了するために処理するのではなく、結果の型(この例ではブール値)。
あなたのcreateFreshSnapshot
例は、これを意味しているように思われるため、私にとってはこの観点にもっと関連しているようです:新鮮なスナップショットを作成してから、作成操作が成功したかどうかを報告します。この理由を考えると、名前createFreshSnapshot
はあなたの状況に最適なもののようです。
?
メソッド名で使用できる言語は何ですか?