Est-il nécessaire d'écrire une autre partie dans chaque condition if?
La question que j'avais posée pourrait être fermé. Mais je veux juste savoir qu'est-il nécessaire d'écrire une partie de chaque si la condition. Un de mes programmeur senior m'a dit que "vous devriez écrire d'autre part, dans tous les cas une condition" . Supposons que nous n'avons pas de condition pour écrire dans le reste de la partie alors que devons-nous faire ? Je suppose une bonne discussion se passe ici....
Merci & Cordialement,
Rahul Vyas
source d'informationauteur Rahul Vyas
Vous devez vous connecter pour publier un commentaire.
C'est une idée horrible. Vous vous retrouvez avec un code de la forme:
Comment on pourrait penser que c'est plus lisible et maintenable que n'ayant pas d'
else
à tous est au delà de moi. Cela ressemble à l'une de ces règles faits par des gens qui ont trop de temps libre sur leurs mains. Obtenir tiré aussi vite que vous le pouvez, ou au moins éloigner calmement et tranquillement 🙂Non, vous n'avez certainement pas ont - au moins dans la plupart des langues. (Vous n'avez pas spécifié; il est tout à fait possible qu'il y est une langue qui ne respecter cela.) Voici un exemple où je ne voudrais certainement pas:
Maintenant, vous pourrait mettre le travail principal de la méthode dans un "else" clause d'ici - mais il augmenterait de nidification inutilement. Ajouter un peu plus de conditions et de toute la chose devient illisible mess.
Ce modèle de "début" est raisonnable commune, dans mon expérience - et va pour les valeurs de retour, ainsi que les exceptions. Je sais qu'il ya certains qui sont en faveur d'un seul point de retour à partir d'une méthode, mais dans les langues que je travail avec (Java, C#), qui peut souvent conduire à beaucoup moins de code lisible et plus profonde imbrication.
Maintenant, il y a une situation où il y a plus de place pour le débat, et c'est là que les deux branches sont de terminal, mais aucun d'eux n'est effectivement un raccourci:
(Notez que j'ai volontairement donné que les deux branches de plus de travail à faire que de retourner - le contraire d'une instruction conditionnelle serait approprié.)
Cela serait plus lisible sans les "autres"? C'est vraiment une question de choix personnel, et je ne vais pas à demander, je suis toujours cohérentes. Pour avoir eu les deux branches également en retrait leur donne un poids égal en quelque sorte - et encourage peut-être la possibilité de refactoring, plus tard, par l'inversion de l'état... alors que si l'on venait de tomber à travers le "retour prix d'origine", le refactoring de mettre en un bloc si et le déplacement de la remise de cas hors d'un bloc si serait moins évidemment correct à première vue.
Danger! Danger, Will Robinson!
http://en.wikipedia.org/wiki/Cargo_cult_programming
Est l'inclusion de vide
else { }
blocs va en quelque sorte à améliorer la qualité, la lisibilité ou la robustesse de votre code? Je ne pense pas.Dans des langages comme Java et C,
if - else
est une déclaration et ne renvoie pas de valeur. De sorte que vous pouvez heureusement écrire que leif
partie et aller sur. Et je pense que c'est la meilleure pratique plutôt que d'ajouter du videelse
s après chaqueif
.Toutefois, dans les langages fonctionnels comme Haskell et Clojure,
if
est une expression et elle doit retourner une valeur. Donc, il doit être réussi avec unelse
. Cependant, il existe encore des cas où vous ne pouvez pas besoin d'unelse
section. Clojure, pour de tels cas, a unwhen
macro qui enveloppeif - else
de retournil
dans leelse
section et d'éviter de l'écrire.En regardant ce purement d'un point de vue sémantique - je ne vois pas un seul cas
où il n'est pas implicite de l'autre pour chaque cas.
si la voiture n'est pas arrêté avant d'atteindre le mur, j'ai un crash, sinon je vais pas tomber en panne.
Sémantique de côté:
La réponse à cette question dépend de l'environnement, et ce le résultat d'une erreur est.
Code de commerce? Faire ce que les normes de codage dire.
À mon humble avis, vous trouverez que de l'orthographe, bien que d'abord, il semble comme trop de travail, seront indispensables à 10 ans à partir de maintenant, lorsque vous revenez sur ce code. Mais, elle ne serait certainement pas la fin du monde si vous avez manqué un important "anti-condition".
Cependant: la Sécurité, la Sécurité ou la Vie de la Critique de code? C'est une autre histoire.
Dans ce cas, vous voulez faire deux choses.
Première:Plutôt que de tester une faute, vous voulez prouver il n'y a pas une faute. Cela nécessite une vision pessimiste de l'entrée d'un module. Vous assumez tout est faux
jusqu'à ce que vous prouver qu'il est correct.
Deuxième: dans la vie critique: Vous ne voulez JAMAIS faire de mal à un patient.:
Oups. J'ai oublié de le mettre everyThingIsSafe faux.
La routine qui a appelé cette snippit est maintenant menti. Avais-je initialisé evertThingIsSafe des faux - je suis toujours sûre, mais maintenant j'ai besoin de la clause else pour indiquer qu'il n'y avait pas une erreur.
Et oui, j'avais changé de ce à un test positif - mais j'ai besoin de l'autre
pour gérer la faute.
Et oui, je pourrais avoir attribué everyThingIsSafe() le retour immédiat de la case.
Et puis testé le drapeau pour signaler un problème. Implicite de l'autre, pourquoi ne pas être explicite?
Strictement parlant, l'implicite d'autre cela représente est raisonnable.
De la FDA/sécurité auditeur, peut-être pas.
Si c'est explicite, peut-point à l'épreuve, sa chose, et que j'ai manipulé les deux conditions clairement.
J'ai été de codage pour les dispositifs médicaux de 25 ans. Dans ce cas, vous voulez que l'autre personne, vous voulez la valeur par défaut dans le cas, et ils ne sont jamais vides. Vous voulez savoir exactement ce qui va arriver, ou aussi près que vous le pouvez. Car donnant sur une condition pourrait tuer quelqu'un.
Rechercher Therac-25. 8 gravement blessé. 3 morts.
Parfois, il n'y a pas d'autre partie....et notamment un vide juste rend le code moins lisible à mon humble avis.
Non, vous n'avez pas à ..
Aussi, je ne pense pas que c'est une bonne idée pour des raisons de lisibilité, puisque vous aurez beaucoup de vide d'autre blocs. ce qui ne sera pas joli à voir.
C'est purement une question de style et de clarté. Il est facile d'imaginer si les déclarations, en particulier celles qui sont simples, pour lesquelles un d'autre serait tout à fait superflu. Mais quand vous avez un conditionnel plus complexe, peut-être la manipulation d'un certain nombre de différents cas, il peut souvent être la clarification de déclarer explicitement que, sinon, rien ne doit être fait. Dans ces cas-là, j'avais laisser un
//do nothing
commentaire dans le vide sinon le reste clair que l'espace est intentionnellement laissée en blanc.Pas, mais personnellement, je choisis toujours inclure l'encapsulation des accolades pour éviter
J'écrirais
Je sais je suis en retard mais j'ai fait beaucoup de réflexion sur le présent et je voulais partager mes résultats.
Dans le code critique, il est impératif que chaque branche est prise en compte. L'écriture d'une autre personne n'est pas nécessaire, mais laisser une marque que d'autre n'est pas nécessaire et pourquoi. Cela aidera à l'examinateur. Observer: