Les méthodes booléennes doivent-elles toujours prendre la forme affirmative, même lorsqu'elles ne seront jamais utilisées que sous forme négative?
Supposons que je veuille vérifier si une entité existe avant d'en créer une. Mon argument est que la première forme ci-dessous est meilleure que la seconde, que la méthode soit utilisée ou non sous la forme affirmative.
En résumé, je trouve if(!affirmative)
plus facile à lire que if(negative)
. J'ai un collègue qui n'est pas d'accord, des pensées?
Première forme:
int entity_id = 42;
if(!entity_exists(entity_id)) create_entity(entity_id);
Deuxième forme:
int entity_id = 42;
if(entity_not_exist(entity_id)) create_entity(entity_id);
!
personnage me manque tellement de fois, ce qui me fait mal comprendre le code jusqu'à ce que je le relise à nouveau. Donc, je suis probablement plus d'accord avec votre collègue. J'aime la forme qui est vraie lorsque vous l'examinez.
if (!exists) create()
peut être considéré comme une mauvaise pratique dans de nombreux langages / frameworks, car il a tendance à ne pas être thread-safe. En général, l’approche privilégiée consiste à appeler create()
et à gérer des exceptions spécifiques ou des codes de retour indiquant que l’entité existe déjà. Ce n’est bien sûr pas une réponse à la question (c’est pourquoi il s’agit d’un commentaire uniquement).
if (not entity_exists(entity_id))