Les différentes façons d'écrire l'instruction “if”
J'ai vu différentes façons d'écrire un if
déclaration.
Lequel préférez-vous et pourquoi?
Exemple 1:
if (val % 2 == 1){output = “Number is odd”;}else{output = “Number is even”;}
Exemple 2:
if (val % 2 == 1)
{
output = “Number is odd”;
}
else
{
output = “Number is even”;
}
Exemple 3:
if (val % 2 == 1)
output = “Number is odd”;
else
output = “Number is even”;
Exemple 4:
if (val % 2 == 1){
output = “Number is odd”;
} else {
output = “Number is even”;
}
Question similaire:
Pourquoi est-il considéré comme une mauvaise pratique pour omettre les accolades?
Vous devez vous connecter pour publier un commentaire.
Pour les cas comme cela, il y a aussi l'opérateur conditionnel:
Si vous êtes certainement allez utiliser un "si" j'avais utilisation de la version 2 ou 4, selon le reste de vos renforts de style. (Au travail, j'ai utiliser 4; pour des projets personnels, j'utilise 2.) La chose principale est qu'il y a des accolades, même autour de simples déclarations.
BTW, pour tester la parité, c'est légèrement plus rapide à utiliser:
La Version 2. J'ai toujours inclure les crochets parce que si jamais vous avez besoin de mettre plus d'une ligne sous la condition que vous n'aurez pas à vous soucier de mettre les crochets à une date ultérieure. Que, et il fait en sorte que TOUS vos si les états ont la même structure qui aide lorsque vous numérisez le code pour une certaine instruction if.
J'utilise la version 2.
L'une des raisons pour utiliser des accolades devient plus clair si vous n'avez pas un d'autre.
Si vous devez ensuite ajouter une autre ligne de code, vous êtes moins susceptibles d'avoir un problème:
Sans les accolades, vous pourrait ai fait:
Personnellement, je préfère 3. L'extra accolades juste ajouter inutilement du bruit visuel et de l'espace.
Je peux voir un peu le raisonnement pour 2/4 pour réduire les bugs, mais je n'ai personnellement jamais eu un bug, parce que la pensée de lignes supplémentaires ont été dans une instruction if. Je ne l'utilisation de C# et visual studio pour que mon code reste toujours assez bien formaté. Cependant, ceci pourrait être un problème si j'ai été un plus le bloc-notes de style programmeur.
Aucun des ci-dessus.
Si mon exécution du bloc a qu'une seule ligne (même si c'est une immense déclaration d') alors je ne pas utiliser des accolades, mais je ne tiret, tout comme #3
Un exemple avec plusieurs états qui n'ont pas besoin d'accolades:
Cela dit, Jon Skeet la réponse à cette question est le meilleur
Je préfère le n ° 2. Facilite la lisibilité.
Je suis d'accord avec l'opérateur ternaire. Très sous-utilisée dans le code que j'ai trouver, et je pense que c'est beaucoup plus facile et plus agréable à lire que tous les parenthèses et les tirets qu'il faut pour écrire un if/else.
Il est plus important d'être cohérent qu'à sélectionner le meilleur.
Ces styles ont différents avantages et inconvénients, mais aucun n'est aussi mauvais que de les mélanger au sein d'un projet ou même une unité de compilation ou à l'intérieur d'une fonction.
Opérateur ternaire est le choix évident pour ce code. Pour la simple et unique déclaration
if/else
's que ne peut en être autrement exprimé, je préfère un correctement en retrait de cas 3:Je comprends la motivation derrière "toujours utiliser des accolades", mais je n'ai personnellement jamais été mordu par leur omission (OK, une fois. Avec une macro).
De la au-dessus de styles, je choisirais (2). (4) serait ok si "correctement" en retrait.
(1) j'avais attribut à un jeune développeur qui je l'espère va croître à partir de "code compact", ou quelqu'un qui ne peut pas se permettre une vie décente moniteur. Encore, j'irais avec elle si c'était le style local.
J'utilise la version 2.
Il est étrange que personne n'a mentionné ceci:
Pour moi, c'est la seule façon correcte, bien sûr 🙂
Personnellement, il y a deux méthodes que je trouve être de bonne pratique:
Pour si-blocs, il n'y a que de cette manière:
C'est la plus sûre et la plus compréhensible de la façon d'écrire de si-sinon-blocs.
Pour revêtements un (vrai doublures qui sont à la fois compréhensibles sur une seule ligne), vous pouvez utiliser l'opérateur ternaire.
Vous ne devriez pas appeler les méthodes que faire quelque chose qui ne contribuent pas au courant de l'assignation.
Je ne voudrais pas utiliser de toute autre manière que celles indiquées ci-dessus.
Je préfère la 4 moi-même, mais je pense que 2 est vraiment bon aussi.
Je voudrais l'utiliser dans l'ordre suivant:
1) l'opérateur Ternaire
2) l'exemple 3, mais en retrait correctement
3) soit 2 ou 4, ils sont fondamentalement les mêmes. Je ferais ce que le général styl était où j'ai travaillé.
Je suis d'accord avec ce que jake dit à propos de l'omission de l'inutile accolades. Je n'ai jamais causé ou vu un bug causé par le nouveau code ajouté et que quelqu'un en pensant qu'ils étaient partie d'une instruction if, mais ils n'étaient pas en raison de l'absence d'accolades. Si quelqu'un a jamais fait de le faire, j'ridiculiser sans pitié.
Vous auriez à me torturer pour me faire utiliser le numéro 1.
J'avais toujours utiliser #2. #4 est vraiment horrible de mise en page et ne le fait que par quelqu'un qui croit qu'une méthode doit être d'une taille d'écran de longueur et fera tout pour le fourrer dans, plutôt que de refactoriser le code!!!
Personnellement, je préfère la version 2. Mais puisque c'est seulement le formatage n'a pas d'importance. L'utilisation qui est mieux lisible pour vous et les membres de votre équipe!
- Je utiliser un #2 avec un changement mineur
Version n ° 2 pour moi - plus facile à voir, facile à lire, facile à voir lorsque la si de début et de fin, de même pour le reste, vous n'avez pas à vous soucier de mettre entre parenthèses si vous souhaitez ajouter plus d'une instruction.
De courtes déclarations:
Multiples ou longues déclarations
l'aide avec les accolades est suggéré, j'ai vu un problème avec l'instruction if else sans accolades ,(je ne me souviens pas exactement) c'est à dire de Déclaration en vertu de la si n'a pas été exécutée, lorsque j'ai ajouté le même avec des accolades, puis seulement travaillé.( À l'aide de Visual studio & C#4.0).
L'exemple 2 est sans doute la moins sujette aux erreurs d'approche. Veuillez voir cette réponse que j'ai donné à un question similaire pour la raison:
Ce qui est le propre style unique de décision et d'action des états?
Bien que Visual Studio par défaut pour le corset d'utilisation est de mettre des accolades à un retour à la ligne (ma méthode préférée), le Cadre Des Lignes Directrices De Conception livre (première édition) par Krzysztof Cwalina et Brad Abrams proposer une autre convention, à l'exemple 4, en plaçant l'accolade d'ouverture à la fin d'un précédent
if
déclaration (Page 274). Ils ont également état "Éviter omettre les accolades, même si le langage le permet".De ne pas avoir la deuxième édition à la main, je ne pouvais pas dire si ces conventions ont changé ou pas.