多くの命名規則では、ブール値を返すメソッド(述語メソッドとも呼ばれます)にはa questionの後に名前を付けることを推奨しています。私の質問は次のとおりです。それらは、メソッドがアサーションの後に名前が付けられるべきであることを本当に意味しないのですか
違いは微妙かもしれませんが、場合によっては異なる名前になります。
時々、これは違いがなく、フレージングは同じです:
さらに、ほとんどの場合、「質問」と呼ばれるものは実際にはassertionsのようです。
ですから、質問を言い換えると、assertionがquestion?
命名規則のポイントは、コードを英語のように読ませることではないため、少し分析しすぎている可能性があります。多くの言語では、論理的な結果またはブール変数を返すメソッドまたは関数の前にis
を付けるのが通例です。他の伝統(LISP、Rubyなど)があり、代わりに接尾辞_?
_が使用されます。 (古いLISPの伝統は、predicateのサフィックス_-p
_です)。
is_transparent
_はピクセルオブジェクトのメソッドである必要があります。オブジェクトを持たない言語でOOPスタイルをシミュレートする場合、タイプは通常プレフィックス_Pixel_is_transparent
_になります。プレフィックスis
はhighlightこのメソッドのブール型の性質にのみ使用されます;これはメソッド呼び出し(_pixel.transparent
_でも同様に機能しますが、これは他のプロパティ名があいまいです)。at_eof
_という名前を付けます。これは、ファイルの終わりをストリーム内の場所として解釈しますが、_stream.is_eof
_も機能します。ここでは、EOF is特定の状態。collection.exists(key)
の方が適しています。array_contains_element
_は型と不要なelement
を含むため、適切なメソッド名ではありません。より良い:array.contains(elem)
。私が提案する名前はすべてアサーション、より正確には述語です。これらの述語がif-then-elseコンテックスで使用されている場合、質問を使用しても言語的に意味がありません。 「assertion」という単語は、多くの言語で不変条件のテストを説明するために使用されるため、おそらくここでは最適ではありません。単語 “predicate” の方が良いでしょう。trueまたはfalseのステートメントです。ステートメントは、質問ではなく、あたかもそれが真実であるかのように表現されます。ステートメント_1 ∈ {}
_ –「_1
_は空のセットの要素」または「空のセットに_1
_が含まれている」はfalseステートメントです。 「空のセットに数値1が含まれていますか?」という質問yesまたはnoで答えることができますが、trueまたはfalseではありません。