10
votes

int i vs int index etc. Lequel est le meilleur?


5 commentaires

NDX est-il vraiment plus descriptif que moi ou index? Ou était-ce juste un compromis sur le nombre de caractères à taper? ;)


Je pense que ind est plus simple que ndx , même s'il est juste le même nombre de caractères.


@Tuzo ne me demande pas. Un gars est un programmeur Delphi alors peut-être que c'est plus normal là-bas? Je crois que j'ai vu les deux idx et ndx utilisé cependant.


Je déteste ind - un gars que j'ai travaillé avec l'a utilisé tout le temps, mais parfois, cela signifiait "index" alors que d'autres fois, cela signifiait "indicateur". Les indicateurs étaient parfois booléens (drapeaux), parfois des entiers (mais pas nécessairement un indice de quoi que ce soit). Ses pauvres pratiques ont pour toujours, je me suis ambiguë. J'utiliserais un clair i pour des choses simples, des boucles d'itération, etc., ou Quelqueindex pour des choses plus complexes où l'index pourrait ne pas nécessairement être d'augmenter.


Dupliquer: Stackoverflow.com/questions/130775/ ... , Stackoverflow.com/questions/101070/...


11 Réponses :


14
votes

i est toutefois assez standard en termes de première boucle, suivi de j pour une boucle interne et k pour un intérieur -inner boucle, et ainsi de suite.

Comme avec presque toutes les règles de dénomination, tant qu'il est standard dans un projet et fonctionne bien pour tous ceux-ci, alors c'est bien.


3 commentaires

Je ne connais pas le bit "et ainsi de suite". Aller à quatre niveaux justifie probablement une repense de la conception. Plus, l est un nom terrible pour une variable dans n'importe quel contexte (une sorte de barrière naturelle :-).


@Marcelo: Bien sûr. Je démarre effectivement des boucles avec k et passez à m et n , je n'ai jamais eu besoin de quatrième: p


Pas si vous matrices sont majeures de colonne. Dans l'algèbre linéaire, M et N sont assez standard pour les dimensions, pas pour courir des variables (qui sont i, j, k)



8
votes

Si possible, je vais favoriser les noms descriptifs, car nous devrions être efforcés de recevoir un code lisible.

Pour les variables temporaires utilisées dans un bloc de code serré, un nom de variable court est acceptable.

Mais si la boucle ou le bloc de code est très long, il est préférable d'avoir un nom de variable descriptif plus long, le cas échéant, sans autre raison qu'il ne fera que faire des recherches de texte plus faciles.


1 commentaires

I est une variable d'index standard qui doit être reconnaissable dans une structure à la boucle à peu près n'importe quelle boucle.



1
votes

S'il est petit bloc, et il n'y a pas de boucle, je vais bien, c'est presque comme une règle non écrite que je suis une variable incrémentielle de boucle chaque fois qu'il apparaît. Dans tout encore plus complexe, une bonne nommée est cruciale.


0 commentaires

2
votes

Quand il s'agit de nommer, tout est question de clarté. Je dirais que la plupart des gens qui regardent le code savent que "INT I" est une sorte d'index, mais ils supposent probablement que c'est une vieille consommation de vanille unique. Donc, si cela fait quelque chose d'intelligent (c.-à-d. Non seulement de compter de manière simple), vous devez appeler cela quelque chose qui rend ce fait clair.


0 commentaires

1
votes

Personnellement, j'utilise i, J, J Toutefois, au lieu de variables de boucle, j'ai tendance à essayer d'utiliser pour chaque lorsque la langue le permet - je trouve cela encore mieux.


2 commentaires

Oui bien sûr, mais ceci est à la fois relatif à mon codage en C et C # et peut-être même un peu de rubis


+1 .. Si des index ne sont pas nécessaires et que la langue prend en charge l'itération de la collecte, je le préfère même s'il est plus lent.



5
votes

Si vous faites des boucles imbriquées pour accéder aux éléments de réseau multidimensionnels, les noms d'itérateurs descriptifs sont un must pour créer un code auto-commente. par exemple, xxx

vs. xxx


5 commentaires

Voulez-vous dire comme rangée, colonne ?


Pseudocode suit toute convention que vous souhaitez - changer de virgule juste parce que.


Et si vous avez une matrice en trois dimensions ou trois boucles imbriquées (matrice matrice multiplie)? Je pense que je, j, k est aussi descriptif que vous pouvez être


@AAA, c'est vrai dans certaines situations, mais dans la plupart des situations, je pense que des noms d'itérateurs imbriqués descriptifs peuvent être choisis.


R, C est le meilleur des deux mondes, IMHO. à peu près auto-explicite, mais courte et douce.



0
votes

Je n'utilise jamais de noms de variable à une seule lettre pour une raison simple - avez-vous déjà essayé de rechercher toutes les occurrences d'une certaine variable dans un fichier ou sur plusieurs fichiers? Il vaut mieux utiliser quelque chose d'un peu moins ambigu et plus recherché.


1 commentaires

Si vos identifiants à une seule lettre sont toujours émergés, il n'a pas de sens à rechercher toutes les occurrences d'entre elles. :)



1
votes

J'utilise fréquemment x code> et y code> pour des instances lorsque je analyse un objet 2 dimensions comme un bitmap.

for (int (y = 0; y < height; y++)
{
    for (int x = 0; x < width; x++)
    {
        // work
    }
}


0 commentaires

3
votes

J'utilise des variables à une lettre comme des compteurs beaucoup. Voici comment je boucle, utilisez de manière exhaustive les lettres de l'alphabet: xxx


5 commentaires

génial +1 .. Maintenant si cela aurait été Array [Pays] [State] [County] [Town] [Street] [Bâtiment] [Maison] [[0] [Nommez] , j'aurais été soulevé.


Sans parler du fait que l, m, n, p, r, t, v et x sucer comme variables de boucle.


ressemble à Perl de bonne forme.


J'ai travaillé sur un morceau de code où ils ont utilisé A, R, S, E comme Vars. Il a expliqué un [R] [S] = E dans la boucle interne. Toujours pas sûr si c'était exprès.


Mes yeux Oh oh godmyeyeswhwyarethyBurning Les lunettes de vie qu'ils ne font rien



4
votes

Les noms de variables courts sont super , mais ils doivent avoir de petites étendues. Et ils devraient honorer les conventions de la langue. Jusqu'au jour où je suis jour, mon code Haskell et ML aura des variables de valorisation de la fonction F , g et H et monadiques M , variables de type non connu de type A et B et des listes de types d'éléments inconnus comme et BS . Mais les champs de ces variables seront limités aux fonctions courtes ou clauses.

mon code C aura des variables appelées i , j , p , q , s et t . Mais les étendues de ces variables seront confinées à des boucles individuelles (toutes les louanges C99 et les backorts de Backports C ++!) Ou des fonctions courtes. Que ce soit un indice de boucle ou une autre variable, quelque chose qui apparaît dans une grande portée obtient un nom plus long.


0 commentaires

3
votes

L'étendue de la visibilité d'un élément devrait dicter la descriptive que le nom a besoin soit.

Si vous avez littéralement une boucle minuscule, je, j et k sont des compteurs d'index fins et typiques. Parfois, un nom plus descriptif peut aider illuminer l'intention, mais si la boucle pour la boucle est configurée comme suit, un nom plus descriptif ne comporte pas vraiment d'importance. xxx

qui dit , les abréviations ne doivent jamais être utilisées sauf si elles sont utilisées de manière cohérente. Personnellement, je pense que ndx est un identifiant terrible car il est difficile de taper; Je peux taper l'anglais parfaitement bien et ma vitesse de programmation n'est pas limitée par ma vitesse de saisie. Si vous souhaitez dire index dire index .

Je pense que c'était dans le programmeur pragmatique qu'ils ont dit que vous ne devriez pas utiliser des abréviations, car alors Les gens ne sauront jamais quelle abréviation à utiliser. Je sais que je veux une chose appelée index donc i type index mais je reçois une erreur de compilateur. Maintenant quoi? (Chasse à travers le code pour constater que c'est écrit ndx me dérangera.)

Alors que j'essaie d'y penser, à propos de la seule abréviation que j'utilise ce n'est pas du jeu. spécifique est "num" pour rester pour "Numberof". Autre que cela, j'utilise "NPC" pour signifier un caractère non-joueur, "AI" signifie une intelligence artificielle, etc., etc., et parfois j'utilise des abréviations dans de petits blocs, par ex. Une fonction de 10 lignes opérant sur une caméra peut simplement l'appeler 'came', mais la portée est petite, il est donc facile de voir ce qui se passe et que la possibilité de confusion est limitée.

STAI SO- Petite portée - > Faites ce que vous aimez (tant qu'il y a une certaine consistance). Grande portée -> faites votre nom sans ambiguïté, significatif et facile à taper. (Par "facile à taper" Je veux dire "facile à mémoriser comment épeler" ainsi que "ne pas aller à la mer".)


0 commentaires