J'ai vu cela dans un certain nombre de boucles et d'incréments. Au lieu de faire i ++, ils font i + = 1. Pourquoi est-ce? P>
6 Réponses :
Préférence personnelle et style. P>
empêche l'excès d'effrayage. Au moins c'est ce que Crockford dit. P>
Cependant, le code de Crafty sera Crafty sans "++" et le code de nettoyage sera propre code avec "++".
Toutes les langues n'ont pas ++ code> opérateur (Python, pour une) ... Probablement ces personnes proviennent d'un arrière-plan dans l'une de ces langues. De plus, certaines personnes sentent que
i ++ code> n'est pas très clair, d'autant plus que certaines langues traitent
i ++ code> et
++ i code> différemment. P>
Chaque langue que je connaisse des friandises i ++ code> et
++ i code> différemment dans une voie exactement: la valeur de l'expression. En d'autres termes,
x = i ++; code> attribue une valeur inférieure à un à
x code> que
x = ++ i code>. Est-ce ce que tu avais en tête? Je suis curieux de votre utilisation du mot "certains"; Connaissez-vous les langues qui ont à la fois des opérateurs d'incréments de préfixes et de postfix et ne font pas cette distinction?
@Teté Hopper Perl retournera une valeur valeur i> ou une référence i> en fonction d'un incrément pré ou post. Cela peut conduire à un comportement déroutant. Sous la forme de base, ce n'est pas un problème. Ceci est très perplexe dans des cas de FOO ($ x, ++ x x) code>, cependant (l'évaluation arrive toujours de gauche à droite). De plus, C / C ++ a beaucoup d'UB avec des modifications variables (++ / -) et un accès entre deux points de séquence.
Dans JavaScript pour le navigateur IE10 (et probablement <10 aussi) I ++ est 15% plus lent i> que i + = 1. Ainsi, je préfère toujours utiliser i + = 1, juste parce que c'est plus rapide et sémantiquement, il est pratiquement le même droit.
i = i + 1 code> est plus facile à décoder en anglais.
i ++ code> Bien que totalement correct ne fonctionne pas bien lorsque les débutants lisent le code. Le programmeur essayait éventuellement de rendre leur code plus lisible par les débutants, ou peut-être tout simplement pas d'essayer d'être trop préoccupé par la syntaxe. Il n'y a pas bonne em> la raison d'utiliser un sur l'autre. P>
Certaines personnes trouvent Il existe des problèmes de lisibilité avec le i = i + 1 code> ou
i + = 1 code> plus descriptif que
i ++ code>. C'est juste une question de style de codage et de lisibilité. Dans la plupart des langues actuelles, aucune différence de performance n'est pas du tout entre les différentes manières. P>
++ code> et
- code> les opérateurs, mais c'est surtout quand ils sont utilisés avec d'autres opérateurs, ce n'est pas vraiment un problème quand ils sont utilisés par eux-mêmes. Une expression comme
++ x + - ++ y + -z ++ code> par exemple est parfaitement valide, mais il est difficile de voir ce que cela fait réellement. À mesure que les opérateurs causent des problèmes de lisibilité dans certains cas, certains estiment qu'ils devraient toujours être évités. P>
C'est un extrême, cependant. Pendant que je préfère + = code> à
++ code>, bon code est bon code et le code Bad est mauvais code:
++ x + - ++ y + -z ++ code > n'est pas bon code,
++ code> à part. Par exemple, imaginez si la "règle" pour utiliser
i ++ code> (ou même
++ i code>) est "uniquement dans un contexte de déclaration". Ce non différent des «règles» qui limitent l'utilisation de
x = i = i + 1 code> ou d'autres monstruosités.
@pst: Bien sûr, c'est un mauvais code, le point de l'exemple consistait à démontrer que les opérateurs peuvent être utilisés pour écrire un code illisible.
La raison générale est qu'il existe deux versions d'incrément différentes qui se comportent différemment et p> Lorsque vous écrivez ces expressions comme car si vous faites accidentellement p> Il est plus facile d'attraper l'erreur p> p> ++ i code> traduit par " incrément i, puis évalue em>" alors que
i ++ code> traduit par " évaluer i, puis incrément p>" p> "
i = i + 1; code> Il est clair que l'intention du programmeur était et plus facile à trouver des bogues dans le code. C'est la même raison que les gens écrivent " des clauses yoda em>" comme p>
Pourquoi votre question est-elle dans le titre différent de la question dans le corps? Lequel pensez-vous de demander?
J'utilise
i + = 1 code>, sauf dans la 3ème position d'une boucle à boucle dans laquelle j'utilise
i ++ code>.