Ceci est similaire à:
.NET: BOOL VS Enum comme un paramètre de méthode p>
mais concerne le retour d'un bool d'une fonction dans certaines situations. p>
utilisé comme ceci: p> Ce n'est pas évident du contexte appelant ce que le bool est retourné du sondage () signifie.
Il serait peut-être plus clair à certains égards si la fonction "sondage" a été renommée "isfinished ()", mais la méthode fait un peu de travail, et (IMO) ne refléterait pas vraiment ce que fait la fonction. Des noms tels que "isfinis" semblent également plus appropriés pour les propriétés. Une autre option pourrait être de le renommer à quelque chose comme: «Pollandreturniscileished», mais cela ne se sent pas non plus. P> Donc, une option pourrait être de retourner une énumération. E.g: p> appelé comme ceci: p> mais cela ressemble à une overkill.
Des idées? P> p>
5 Réponses :
Si vous avez plus de 2 états, utilisez un edit: p> comme votre exemple , vous pouvez facilement utiliser les deux, si nécessaire. P> Enum code>, sinon utilisez simplement un bool code>. public bool IsRunning { get {return Poll() == Running; }}
public bool IsFinished { get {return Poll() == Finished; }}
Vous ne devriez pas exécuter une longue fonction dans une propriété comme celle-là. Si vous en avez vraiment besoin, vous devez définir un champ local au sein du sondage () et retourner cela dans la propriété.
@Jouke van der Maas: Je ne sais pas les détails de la mise en œuvre, donc je ne fais que sur ce qui a été donné.
Vous pouvez assumer que la méthode "sondage" est relativement coûteuse à appeler (par exemple, appeler un réseau). Désolé si je n'étais pas clair.
@Moe sisko: sondage code> est un choix terrible nom alors. Quelque chose comme QueryStatus code> pourrait être plus intuitif.
Tout d'abord, le code est destiné aux personnes à lire et, dans votre cas, la version Enum est plus lisible que la version BOOL. P>
EDIT: P>
Un autre avantage de la version Enum est que vous pouvez facilement ajouter d'autres statuts si vous avez besoin. Comme erreur code> par exemple. P>
Je suis la convention .NET que les propriétés booléennes sont préfixées avec "IS" et des méthodes booléennes sont préfixées avec "Essayer" (ou "ou" est "le cas échéant). P>
Dans votre cas, je pense que le problème est dans le nom "Sondage". Nommez la méthode indiquant ce qu'elle fait ou interrogatoire. par exemple. trydosomething () fort> p>
Une méthode doit être lue comme un verbe em>, et le résultat de la méthode Lorsque je lisais votre code, je pensais que cela disait tandis que (le système est) ne pas interroger, faire quelque chose p> mais il dit vraiment ... sondage, et si ce n'était pas fini, sondez quelque chose pendant que nous attendons. em> p> Votre version Enum semble avoir changé la sémantique de l'appel, mais pour le meilleur, C'est pourquoi les gens comme ça. tandis que le sondage () est toujours en marche, faites quelque chose pendant que nous attendons. em> p> Le code le plus lisible gagne. P> P> Bool Sondage () code> est trompeur et c'est probablement pourquoi il se sent gênant à utiliser.
J'ai lu et reluez ce que vous essayez de faire. Pour moi, le sondage devrait signifier exactement que vous interrogez pour quelque chose. Ensuite, je vérifierais le statut s'il est toujours en cours d'exécution.
Mon code résultant ressemblerait à ceci. p> Remarque: Isrunning est un getter / setter. Cela serait-ce plus clair? P> p>
Pas une mauvaise question, mais ne vous sentez-vous jamais comme votre surroptimisation? Êtes-vous toujours productif si vous vous demandez à propos de chaque petit détail?
Qu'en est-il de
public Enum bool {vrai, false, filenotfound} code>?@Konerak - Ouais, vous pourriez avoir raison. C'est une de ces petites choses que je rencontre occasionnellement et je me demandais s'il y avait une meilleure façon plus claire.
Tout est basé sur votre mode de maintien du code. Si vous voulez le rendre plus lisible, allez avec le type d'enum.
+1 Pour tenter de rendre le code plus clair, un trait rare ces jours-ci.