2

API を使用していて、コンポーネントを有効または無効にする値を設定する必要があるとします。

あなたは持っていることを好みますか:

control.isEnable = true

また

control.isDisable = false

Imo、最初のものはより「直感的」に見えますが、その理由はわかりますか?

4

4 に答える 4

6

単純な英語だけでなく、コンピューター コードでも二重否定はよくありません。

同意しませんか?

于 2012-11-20T10:04:11.173 に答える
1

識別子は、呼び出し元が関心を持ちやすいという意味を使用する必要があります。場合によっては、一見冗長に見えるものに対して複数のプロパティがあることを意味する場合があります。たとえば、インターフェイスはIsWritableIsImmutableプロパティの両方を提供する場合があります。書き込み可能なものを不変にすることはできず、その逆も同様ですが、オブジェクトが書き込み可能でも不変でもない可能性があります (たとえば、他の何かによって変更される可能性のあるデータのライブ読み取り専用ビューである可能性があります)。オブジェクトに書き込みたいコードはテストする必要がありますIsWritable。オブジェクトを防御的にコピーする必要があるかどうかを知りたいコードは、テストする必要がありますIsImmutable

.net の一部のクラスは、この原則に違反していることに注意してください。たとえば、この原則によれば、 a の有効性をテストするプロパティをWeakReference呼び出す必要がありIsDeadます。これは、 aWeakReferenceが死亡した場合にアクションを実行するコードは、参照が生きている場合は参照に関心がない可能性があるためですが、参照の場合にアクションを実行するコードは、が生きているかどうかをテストするのではなく、ほとんどTargetの場合、 が生きているかどうかをキャプチャしてテストする必要があります。nullWeakReference

于 2012-11-20T18:17:31.967 に答える
1

ない。isFooアクセサーを暗示するなどの質問を形成する名前。

if (control.isEnabled())

フィールドの名前については、形容詞の方がいいと思います。

control.enabled = true

疑問形を好む場合でも、過去分詞形を使用する必要がありますisEnabled。「有効」と英語で説明されているものはありません。

肯定/否定に関しては、99% の確率で NimChimpsky に同意します。私が現在構築しているアプリケーションには、他の 1% の例があり、予想される状態は「問題ありません」であり、否定的なケース (この場合は ) を説明する形容詞が必要でしたrejected

于 2012-11-21T10:12:39.090 に答える
0

「発信者の方が関心を持ちやすい」という意味を使用することに同意しますが、別のオプションは、デフォルトの初期ケースを作成することを検討することです。Falseこれにより、作成時にすでに有効であり、に初期化する必要がありませんTrue

于 2012-11-21T10:25:39.623 に答える