次のブール変数/プロパティ名が標準であることに誰もが同意するでしょう。
ブール式について注意すべき重要な点は、ブール式が記述され、trueまたはfalseとして評価されることです。ユーザーは管理者です。いいえ。あなたはポイントを取得します。
しかし、最近、この方法でブール値が増加するのを見てきました。
これがまったくばかげているように思えないのは私だけですか? 「ユーザーは管理者ですか?」そして、はいまたはいいえを待っています。 「ユーザーは管理者です」と発声し、真または偽の評価を待っています。
Microsoftは最近、これに加えて、Telerik Webコントロールの背後にあるプログラミングも頻繁に行っています。問題は、これがどこから来ているのかわからないことです。以前は人気がなかったため、これに気づいているのは私だけなのか、これが実際に増加傾向にあるのか、そうであれば、ポイントは何ですか?
@Joeがコメントで述べたように、オブジェクトの名前をメソッド名に含めるのは冗長です。あなたが電話するとします:
if (user.isUserAdmin()) {
メソッド名がクラス名(おそらくUser
のようなもの、またはAdmin
と呼ばれるサブクラス)を繰り返すため、これはかなりばかげています。 is
またはare
またはcan
で始まることは、呼び出し先のオブジェクトの直接のコンテキストで意味があります。
ただし、オブジェクトから、そのオブジェクトが担当する別のオブジェクトに関する情報を取得する場合は、あまり意味がありません。例えば:
if (user.ordersAreValid()) {
その後、少しぼやけます。 areOrdersValid
は質問の形式であるため、理にかなっています。しかし、その一方で、ordersAreValid
は、if
やwhile
などの制御構造と組み合わせると文になります(たとえば、「注文が有効な場合」)。私は後者に傾いていますが、それは好みの問題かもしれません。
これを行う理由の1つは、オートコンプリートを支援することです。たとえば、Windowsフォームアプリは、一貫性のない.NET Framework APIに悩まされており、「is」を含める必要があるかどうかわからない場合があります。たとえば、チェックボックスがオンになっているかどうかを確認するには、this.checkbox.Checked
と記述する必要があります。 WPFではこれが変更され、覚えやすいthis.checkbox.IsChecked
を使用する必要があります。
そうは言っても、AreOrdersClosed
がOrdersAreClosed
より優れているとは思いません。考えられる説明は同じオートコンプリートです。ブール値のプロパティとフィールドを見つけやすくなります。
しかし、これは批判される可能性があります:
is
、are
、またはcan
で始めることができます。オートコンプリートの改善が唯一の理由である場合、同じタイプの3つのプレフィックスは多すぎます。一貫性を保つには、AreOrdersClosed
をIsOrdersClosed
にする必要があり、CanResumeDownloads
をIsResumeDownloadsPossible
にする必要があります。おそらく人々は、Is
+ <Adjective>
として文法的に形成されたプロパティで開始し、<Noun>
+ Is
+ <Adjective>
のまれなケースになると、Is
+ <Noun>
+ <Adjective>
を使用すると、APIがより統一されます。
現在、変数の名前の2つの単語の間に「is」が見つかる場合がいくつかあり、.NET Frameworkの有効な大文字小文字を思い出せません。実際、あなたの例を見ると、やるべきリファクタリングがあるように感じます:
IsUserAdmin
はIsAdmin
にすることができます。AreOrdersClosed
は、コンテキストに応じて、AreClosed
またはその他の名前に変更することもできます。たとえば、これがカートに新しい商品を追加できないかどうかを示す値である場合、IsClosed
またはIsFinished
にCart
またはOrder
プロパティを作成します。これは、オートコンプリート/インテリセンスで検索を絞り込むための方法にすぎません。条件を記述し始めるときに、「Is」と入力すると、探しているメンバーの名前がわからないときに、すべてをスクロールしなくても、探しているものを見つけることができます。
これを「Is」のために行う唯一の理由は、ブールメンバーがブランチまたはループのコンテキストで使用されることがよくあるからです。ブール値がほとんどの言語で認識される特別なキーワードや構造が非常に多い数少ないタイプの中にあるのは偶然ではありません。
適切なコンテキストが何であるかを理解できれば、同様の接頭辞を使ってさらに多くのことを記すことができると私は確信しています。