この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);
}
最初の形式には、より論理的な形式よりも利点がありますか?
「読みやすさ」とは別に、いいえ。それらは機能的に同等です。
(「可読性」は引用符で囲まれています。なぜなら私は== false
見つけて !
はるかに読みやすい。しかし、他の人はそうではありません。)
これはスタイルの選択です。コードのパフォーマンスに影響を与えることはほとんどありませんが、読者にとってはより冗長になります。
-ここではcoding style
機能性 ....
-1番目のオプションは非常に明確です、しかし2番目のオプションは非常にエレガントです ...攻撃はありません。
いいえ。利点はありません。 2つ目はより単純です。
btw:2番目のスタイルはJDKソースの隅々にあります。
注:ConcurrentMapを使用すると、より効率的な
values.putIfAbsent(NoteColumns.CREATED_DATE, now);
冗長性の低いソリューションを好み、IsTrueやIsFalseなどのメソッドを避けます。
最初の形式は、Boolean
を返すAPIで使用され、Boolean.FALSEと比較されると、NullPointerException
をスローしません。
2番目の形式は、Java.util.Map
インターフェイスと共に使用する場合、NullPointerException
ではなくboolean
を返すため、Boolean
をスローしません。
一貫したコーディングのイディオムを気にしないのであれば、好きなものを選ぶことができます。この具体的なケースでは、それは本当に重要ではありません。 do一貫したコーディングに注意する場合は、Boolean
である可能性のあるNULL
をチェックするときに何をしたいかを検討してください。