J'ai une méthode qui vérifie certaines choses et retourne un booléen basé sur ces chèques. Cela implique une seule ramification si la section vérifie environ 5 conditions de séquence. Si l'une de ces conditions retournez true, la méthode sera C'est donc une meilleure idée de réellement écrire dans la déclaration d'autre pour ce type de situation? p> Il s'avère que j'avève que j'avève que j'avève que j'avève que j'avève que j'avève que j'avève que j'avève que j'avève que j'avève que j'avève que j'avève que j'avève que j'avève que j'avève que j'avève que j'avève que j'avève que j'avève que ça compte Des informations sur quelle condition ont réellement déclenché le "vrai" pour certains d'entre eux, j'ai donc changé la méthode pour renvoyer une INT, avec -1 représentant la "fausse" situation. La logique reste toujours, si aucune des conditions n'est vraie, cela retournera -1. Donc, je n'ai plus l'option condensable de Le code est actuellement, pour la paraphraser et couper tout le code superforé qui définit Cond1 thru Cond5 ... P> RETOUR TRUE; CODE>. Si aucune des conditions ne renvoie true, la méthode
retourne faux; code>. Étant donné que le code après la section IF ne fonctionnera que si aucune des conditions n'est vraie, ce code est logiquement identique à l'inclusion d'une déclaration réelle.
retour (Cond1 || cond2 || cond3 || cond3 || cond 5); Cond>, mais je remercie tout le monde pour cette suggestion aussi, puisque j'avais effectivement pensé À propos de cela (principalement parce que Cond3 est une condition très complexe impliquant une vérification de l'intersection dans les points médians de deux paires d'objets DateTime, de sorte qu'il semblerait laid). Tandis que la nature de la méthode a changé, la nature de cette question n'a pas et toutes les réponses sont toujours essentiellement applicables ... p>
if (cond1) { return 1; }
else if (cond2) { return 2; }
else if (cond3) { return 3; }
else if (cond4) { return 4; }
else if (cond5) { return 5; }
7 Réponses :
Tout ce qui exprime votre intention le mieux et / ou est le plus lisible.
Toutes les options suivantes sont parfaitement valides: p> ou p> ou p> return condition1
|| condition2
|| condition3;
plus clair que: p>
Je conviens que c'est une question de style et personnellement, je préfère le contraire de ce que vous préférez! Cette dernière option ci-dessus est plus propre et comporte moins de code, et je le préfère pour cette raison.
La première option est plus facile à refacteur dans une nouvelle méthode, c'est pourquoi c'est mieux.
J'ai tendance à préférer un seul point de sortie d'une méthode lorsqu'il est possible sans compliquer la logique du code. Je trouve que les méthodes avec un seul point de sortie sont plus faciles à comprendre, refacteur et à entretenir. Il existe également un endroit pratique pour mettre un point d'arrêt dans lequel vous pouvez toujours modifier la valeur de retour avant de permettre un flux d'exécution à reprendre.
Sans voir votre code, il est difficile de dire, mais étant donné que vous avez un certain nombre de conditions qui produisent un vrai code>, il serait peut-être plus clair pour que le code tombe à travers et avoir une finale
renvoie false; code> à la fin:
On dirait que vous demandez si ceci: peut être transformé en ceci: p> oui. p> Considérez cela aussi: P> return
(condition1) ||
(condition2) ||
(condition3) ||
(condition4) ||
(condition5);
Ceci est purement une question de style et de goût.
Ma préférence personnelle est d'inclure l'autre uniquement s'il y a une ou des situations. p> si Il y a plusieurs retours dans une méthode, puis je vais omettre la finale d'autre. p> Ce schéma semble donner la plus grande clarté, à mon avis. P> p>
J'ai tendance à préférer quelque chose comme ça pour renvoyer des valeurs dures.
IMO Ceci est un candidat parfait pour le raccourcir le retour (Arg.Longueur <10) || arg.startswith ("foo") || arg.endswith ("foo") code>
Bien sûr, mais ce ne sont pas ce que j'appellerais des conditionnels réalistes. L'intention est que je pense que c'est mieux définir une valeur par défaut à votre résultat de retour et processus à ce sujet que de saupoudrer des déclarations de retour partout. Je ne pense pas que ce qui a mal d'avoir plus d'une déclaration de retour, pensez simplement que cela blesse la clarté d'avoir une tonne de déclarations de retour et qu'il rend également plus difficile de déboguer.
Personnellement, je préfère généralement utiliser l'autre parce que je pense que cela rend l'intention plus claire. Si vous écrivez
if (sensorScan()==ENEMY) return FIRE_PHASERS; else return SEND_GREETING;
Jay, avez-vous une URL que je peux partager avec mon collègue? Il ne comprend pas si sinon enchaînant et ne voit pas pourquoi ils ne peuvent pas être indépendants si des déclarations. Je lui ai dit que le sinon code> a une signification sémantique mais je ne me demande pas à travers et je me demande s'il y a une meilleure façon de le phraser.
Passez en revue les réponses de chacun ... Merci encore à tout le monde! La réponse de chacun était utile et correcte. J'ai fait mon choix de faire correspondre ce que j'ai réellement mis en œuvre, et je me trouve d'accepter d'initialiser la valeur par défaut au début. Merci encore!