Duplicata possible:
Est-il mauvais de comparer explicitement avec des constantes booléennes, par exemple si (b == false) en Java?
Dans cet exemple de code NotePadProvider , j'ai remarqué que l'auteur a choisi le formulaire:
if (values.containsKey(NoteColumns.CREATED_DATE) == false) {
values.put(NoteColumns.CREATED_DATE, now);
}
Plus de:
if (!values.containsKey(NoteColumns.CREATED_DATE)) {
values.put(NoteColumns.CREATED_DATE, now);
}
Y a-t-il un avantage dans la première forme par rapport à la plus logique?
En dehors de la "lisibilité", non. Ils sont fonctionnellement équivalents.
("Lisibilité" est entre guillemets parce que je déteste == false
et trouve !
beaucoup plus lisible. Mais d'autres non.)
C'est un choix de style. Cela n'affecte en rien les performances du code, il le rend simplement plus verbeux pour le lecteur.
- Voici son plus sur le coding style
que d'être fonctionnalité ....
- Le la 1ère option est très claire, mais ensuite le le 2ème est assez élégant ... pas d'offense, c'est juste ma vue ..
Surtout la lisibilité. Lors de la lecture d'autres codes, il est beaucoup plus intuitif de lire comme PAS CONTIENT TOUCHE!values.containsKey(NoteColumns.CREATED_DATE)
au lieu de lire CONTIENT TOUCHE IS FAUX)(values.containsKey(NoteColumns.CREATED_DATE) == false)
.
Non, je ne vois aucun avantage. La deuxième est plus directe.
btw: Le deuxième style se trouve dans tous les coins de la source JDK.
Remarque: Avec ConcurrentMap, vous pouvez utiliser le plus efficace
values.putIfAbsent(NoteColumns.CREATED_DATE, now);
Je préfère la solution moins verbeuse et évite les méthodes comme IsTrue ou IsFalse ou similaires.
Le premier formulaire, lorsqu'il est utilisé avec une API qui renvoie Boolean
et comparé à Boolean.FALSE, ne lève jamais un NullPointerException
.
Le deuxième formulaire, lorsqu'il est utilisé avec l'interface Java.util.Map
, Ne lancera jamais un NullPointerException
car il renvoie un boolean
et non un Boolean
.
Si vous n'êtes pas préoccupé par les idiomes de codage cohérents, alors vous pouvez choisir celui que vous aimez, et dans ce cas concret, cela n'a vraiment pas d'importance. Si vous faites vous souciez d'un codage cohérent, pensez à ce que vous voulez faire lorsque vous cochez un Boolean
qui peut être NULL
.