web-dev-qa-db-ja.com

if(boolean == false)vs. if(!boolean)

可能性のある複製:
Javaのif(b == false)などのブール定数と明示的に比較するのは悪いですか?

このNotePadProviderサンプルコード では、著者がフォームを選択したことに気付きました。

    if (values.containsKey(NoteColumns.CREATED_DATE) == false) {
        values.put(NoteColumns.CREATED_DATE, now);
    }

以上:

    if (!values.containsKey(NoteColumns.CREATED_DATE)) {
        values.put(NoteColumns.CREATED_DATE, now);
    }

最初の形式には、より論理的な形式よりも利点がありますか?

34
ateiob

「読みやすさ」とは別に、いいえ。それらは機能的に同等です。

(「可読性」は引用符で囲まれています。なぜなら私は== false 見つけて !はるかに読みやすい。しかし、他の人はそうではありません。)

55
Ry-

これはスタイルの選択です。コードのパフォーマンスに影響を与えることはほとんどありませんが、読者にとってはより冗長になります。

6
Woot4Moo

-ここではcoding style機能性 ....

-1番目のオプションは非常に明確です、しかし2番目のオプションは非常にエレガントです ...攻撃はありません。

5

いいえ。利点はありません。 2つ目はより単純です。

btw:2番目のスタイルはJDKソースの隅々にあります。

注:ConcurrentMapを使用すると、より効率的な

values.putIfAbsent(NoteColumns.CREATED_DATE, now);

冗長性の低いソリューションを好み、IsTrueやIsFalseなどのメソッドを避けます。

2
Peter Lawrey

最初の形式は、Booleanを返すAPIで使用され、Boolean.FALSEと比較されると、NullPointerExceptionをスローしません。

2番目の形式は、Java.util.Mapインターフェイスと共に使用する場合、NullPointerExceptionではなくbooleanを返すため、Booleanをスローしません。

一貫したコーディングのイディオムを気にしないのであれば、好きなものを選ぶことができます。この具体的なケースでは、それは本当に重要ではありません。 do一貫したコーディングに注意する場合は、Booleanである可能性のあるNULLをチェックするときに何をしたいかを検討してください。

1
Sam