126 votes

Sont des booléens sous forme d’arguments de méthode inacceptable ?

Un de mes collègues affirme que booléens comme arguments de méthode ne sont pas acceptables. Ils sont remplacés par les énumérations. Au début je ne voyais aucun avantage, mais il m’a donné un exemple.

Ce qui est plus facile à comprendre ?

Ou

Maintenant je l’ai eu ! ;-)
C’est certainement un exemple où une énumération en tant que second paramètre rend le code plus lisible.

Alors, quelle est votre opinion sur ce sujet ?

131voto

skaffman Points 197885

Boolean représente des choix « Oui/non ». Si vous souhaitez représenter un « oui/non », puis utilisez une valeur booléenne, il devrait être évident.

Mais si c’est un choix entre deux options, ni de ce qui est clairement oui ou non, puis un enum peut parfois être plus lisible.

52voto

simon Points 2319

Enums également permettre les adaptations futures, où vous voulez maintenant un troisième choix (ou plus).

33voto

Jeremy Bourque Points 2443

Utilisez celui que les meilleurs modèles à votre problème. Dans l'exemple que vous donnez, l'enum est un meilleur choix. Cependant, il y aurait d'autres moments, quand un booléen, c'est mieux. Qui a plus de sens pour vous:

lock.setIsLocked(True);

ou

enum LockState { Locked, Unlocked };
lock.setLockState(Locked);

Dans ce cas, je peut choisir l'option booléenne car je pense que c'est assez clair et sans ambiguïté, et je suis sûr que ma serrure ne va pas avoir plus de deux membres. Encore, le second choix est valide, mais inutilement compliqué, à mon humble avis.

14voto

Thorsten79 Points 7975

Rappelez-vous la question, Adlai Stevenson, posé à l'ambassadeur Zorin à l'U. N. au cours de la crise des missiles de cuba?

"Vous êtes dans la salle d'audience de monde avis dès maintenant, et vous pouvez répondre à oui ou non. Vous avez refusé que [les missiles] existent, et je veux savoir si je vous ai bien compris.... Je suis prêt à attendre ma réponse jusqu'à ce que l'enfer gèle, si c'est votre la décision."

Si le drapeau que vous avez dans votre méthode est d'une nature telle que vous pouvez l'épingler sur l'écran vers le bas pour une décision binaire, et que la décision sera jamais se transformer en une partie à trois ou n-décision, optez pour une valeur booléenne. Indications: votre indicateur est appelé isXXX.

Ne pas le faire booléenne dans le cas de quelque chose qui est un commutateur de mode. Il y a toujours un plus mode que vous avez pensé lors de la rédaction de la méthode dans la première place.

Le plus mode dilemme a hanté par exemple Unix, où les possibles modes d'autorisation d'un fichier ou d'un répertoire peut avoir aujourd'hui corrompre le double sens de modes en fonction du type de fichier, la propriété, etc.

13voto

Tim Jarvis Points 12024

Je pense que vous a répondu presque à vous-même, je pense que fin vise à rendre le code plus lisible, et dans ce cas l’enum n’a que, OMI sa toujours préférable de regarder l’objectif fin plutôt que recouvrent les règles, peut-être penser à elle plus comme ligne directrice c'est-à-dire enums sont souvent plus readabl e code que bool générique, ints etc. mais il y aura forcément des exceptions à la règle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X