Lorsque vous êtes en Python ou Javascript, vous devez toujours mettre des opérateurs binaires à la fin de la ligne précédente, afin d'empêcher les sauts de ligne de terminer votre code prématurément; il vous aide à détecter les erreurs.
Mais en C ou C ++, ce n'est pas un problème, donc je me demande:
Y a-t-il une raison pour laquelle je préfère la deuxième version à la première?
return lots_of_text
+ 1;
contre
return lots_of_text +
1;
(Par exemple, l'un d'eux permet-il d'éviter d'autres types d'erreurs? Ou l'un d'eux est-il considéré comme plus lisible?)
c++
coding-style
user541686
la source
la source
Réponses:
Comme vous pouvez le voir dans les réponses, il n'y a pas de consensus sur cette question. À moins que vous ne travailliez en équipe, utilisez ce avec quoi vous êtes plus à l'aise.
je préfère insérer une nouvelle ligne avant les opérateurs.
Chaque fois que je dois rompre des lignes, je mets généralement au plus un terme du même "niveau" sur une ligne:
Loi de gravitation de Newton en Python:
Comparez cela à:
Je veux savoir, que je "divise par la distance au carré", je ne veux pas savoir, que "mass_2 se divise", parce que ce n'est pas ainsi que je pense des expressions mathématiques.
De plus, je veux généralement savoir d'abord ce que je fais (opérateur), avant de me soucier de ce que je fais avec (opérandes).
Ou considérez cette instruction SQL alambiquée:
Cela me permet de voir comment les conditions individuelles sont connectées très facilement, simplement en survolant de haut en bas sans avoir à lire chaque ligne jusqu'à la fin pour trouver l'opérateur par opposition à:
Je pense à la première en termes de «
X
est vrai», puis je modifie cela en disant: « ET c'est également vrai», ce qui me semble plus naturel que l'inverse. De plus, je trouve le premier beaucoup plus facile à analyser visuellement.Ou un exemple PHP:
Encore une fois, je peux simplement parcourir la lecture verticalement pour voir que je concatène simplement du texte, car la plupart du temps, je sens que je ne me soucie pas vraiment de ce qui se trouve à l'intérieur des chaînes / conditions.
Bien sûr, je n'appliquerais pas ce style sans condition. Si mettre la nouvelle ligne après un opérateur me semble plus logique, je le ferais, mais je ne peux pas penser à un exemple pour le moment.
la source
.
, non.=
?force
Je rompt presque toujours les lignes devant les opérateurs binaires afin de faire comprendre aux lecteurs du code qu'il s'agit de la continuation d'une expression et non de la déclaration suivante. Ceci est important si la prochaine déclaration est normalement en retrait. Par exemple, considérons une instruction if qui a une expression conditionnelle complexe:
La deuxième partie de l'expression conditionnelle est facilement confondue avec la première instruction de la partie alors. Cela peut être assez déroutant si la première partie de la condition est longue et que le && se termine bien à droite. Comparez cela avec l'alternative:
Cela semble un peu étrange, mais cela montre clairement que la deuxième partie de la condition n'est pas le début d'une instruction.
Je le fais également dans d'autres contextes, mais l'instruction if est la plus importante, car l'indentation est ambiguë. Bien sûr, on pourrait changer l'indentation ou le placement de l'accolade, mais cela semble aussi étrange.
tl; dr l'extrémité gauche de la ligne est plus importante pour une compréhension rapide de la lecture, donc placer l'opérateur à l'extrémité gauche est un marqueur plus important que c'est une expression continue, pas une déclaration.
la source
+
et-
qui pourrait également être compris comme des opérateurs de préfixe unaires). La solution habituelle pour faire ressortir les lignes continues est de les indenter davantage (c'est-à-dire par deux niveaux).J'utiliserais toujours le premier. Vous voulez qu'il soit clair ce que vous faites avec cela 1 là-bas. Si je voyais cela et qu'il y avait un mur de texte au-dessus de cela, je n'aurais aucune idée de ce qui se passait en ce qui concerne l'utilisation de ce dernier.
Le '+' étant à côté de 1 indique clairement que je fais au moins quelque chose avec le 1 en question plutôt que de traîner "Je suis tout dans votre code mec ..." sans raison apparente.
la source
Je pense que cela aide énormément à la compréhension de la lecture lorsqu'une ligne indique que l'instruction continue dans la ligne suivante en ayant l'opérateur binaire à la fin, et donc en rendant l'instruction incomplète. Le point-virgule manquant ne me suffit pas pour le comprendre immédiatement.
Cela peut simplement être une question d'habitude, mais à moins que vous ne travailliez exclusivement dans des langues qui nécessitent le point-virgule (ce que je trouve assez irréaliste étant donné l'omniprésence des scripts shell, des makefiles et des langages tels que Python), vous n'aurez probablement pas non plus cette habitude.
EDIT: Giorgio fait un excellent point dans les commentaires: cet usage fait écho à la ponctuation courante , à la fois en mathématiques et en langues naturelles. Tu écrirais
Tu n'écrirais pas
la source