10
votes

Comment la verbosité des identifiants affecte-t-elle les performances d'un programmeur?

Je me suis toujours demandé: y a-t-il des faits durs qui indiqueraient que des identifiants plus courts ou plus longs sont meilleurs?

Exemple: strong> p>

ClearScreen()


3 commentaires

Devrait être un wiki communautaire


@Binary Worrier: Ajout de clarification à ma question. Désolé si cela ressemblait à une question de sondage, ce n'est pas le cas.


Cependant, il agit comme une question de sondage. La plupart des réponses sont des réponses de sondage. Quelques points à d'autres livres ou directives, et un article sur un article de Wikipedia qui indique ce qui est probablement une étude réelle.


19 Réponses :


2
votes

Il s'agit vraiment de trouver un équilibre entre les deux, qui est suffisamment facile à lire tout en même temps, pas trop verbeux. Beaucoup de gens ont une aversion personnelle pour les noms de la fonction / de classe élaborés de Java ou de Win32, mais beaucoup d'autres n'aiment pas également les identifiants très courts.


1 commentaires

Je ne connais pas Win32, je pense que le problème des noms de Java n'est pas que les noms sont mauvais: les noms sont réellement parfaits pour ce qu'ils décrivent. Le problème est que, tandis que, tandis qu'unanialiasedPageFactoryFactoryFactory peut être un nom parfait pour un objet, un tel objet ne devrait pas exister. Un nom précis et clair est toujours bon; Lorsqu'un nom arrive aussi long, c'est un problème avec la conception, pas le nom.



21
votes

J'irais une clarté sur la verbosité ou Brevit.

ClearScreenBeforeRerenderingPage() 


3 commentaires

Plus important encore, ClearCreenBeforeringingPage () implique quand il devrait être appelé qui n'est jamais bon.


En fait, j'impliquais que la méthode a fait le rendu, mais c'est tout aussi mauvais. Les deux sont une odeur que vous avez besoin d'une autre méthode


Il convient de noter que c fonctions telles que CLRSCRC () et MALLOC () sont nommées, car il s'agissait initialement d'une limite de six caractères sur les noms. La norme C a-t-elle été écrite aujourd'hui, je doute qu'ils ne soient pas nommés ClearScreen () et MemorysAllocation ().



1
votes

rien de mal avec un identifiant court tant que c'est évident ce que cela signifie.

Personnellement, je me pencherais vers ce dernier parce que je préfère être verbeux (bien que j'essaie de ne pas être aussi verbeux comme MS et leur COMARSHALLInterthreadInterfaceStream Fonction) mais aussi longtemps que votre fonction d'écran transparent n'est pas appelée "F ()" i Ne vois pas de problème :)


0 commentaires

11
votes

Certainement .NET Les développeurs doivent suivre le .NET Nommage Directives .

Ceci suggère que les noms complets doivent être utilisés et non abréviations:

N'utilisez pas d'abréviations ou de contractions comme parties des noms d'identifiant. Par exemple, utilisez GetWinDow au lieu de Getwin.


0 commentaires

5
votes

Ma préférence personnelle est d'avoir des identifiants publics verbeux et des courts courts privés.

Par public, je veux dire des noms de classe, des noms de méthodes, des variables globales et des constantes, des packages, des espaces de noms - en bref tout ce qui peut être accessible à partir d'un grand nombre de places et d'un grand nombre de personnes.

Par privé, je veux dire des variables locales, des membres privés, parfois des paramètres - des choses qui ne sont accessibles qu'à partir d'une portée locale limitée et par un seul développeur unique.


2 commentaires

Variables privées, etc., n'auraient peut-être accès qu'à l'auteur d'origine aujourd'hui, mais qu'en est-il de demain? Si certains noms doivent être clairs et verbeux, ils font sûrement tous?


Je pense que vous avez mal compris mon point. Si la variable va être accessible de plus d'un point, continuez-la et nommez-la correctement. D'autre part, généralement "pour (int i = 0 ;;)" est parfaitement valide et plus lisible que "pour (int myitéraator = 0 ;;)". Quoi qu'il en soit, ce sont des lignes directrices et non des règles strictes - faites simplement ce qui a du sens.



4
votes

Chaque développeur doit savoir comment toucher le type. L'ajout de quelques caractères supplémentaires n'est pas une question de productivité, sauf si vous êtes une chasseur de chasse et de peck.

Avec cela dit, je suis d'accord avec les commentaires précédents sur l'équilibre. Comme avec tant de réponses ici, "cela dépend". Mais je préfère la verbosité et la clarté. Prendre des voyelles est destiné aux anciens dBas.


0 commentaires

1
votes

Les conventions de nommage et style de codage sont souvent discutées de sujets.
Cela dit, les conventions de nommage sont toujours très subjectives - aux personnes et à la plate-forme.

La ligne de fond est toujours - laissez les choses de sens (oui, très subjectives).
Wikibook Recherche - identifiants de nommage < / strong>


0 commentaires

0
votes

aussi il faut penser où l'identifiant est , le bien connu I comme compteur d'itération est un exemple valide: xxx

si le contexte est simple le L'identifiant doit refléter cela en conséquence.


1 commentaires

II est encore meilleur au cas où vous voudrez jamais rechercher vos itérateurs



9
votes

Personnellement, j'aime essayer de suivre la sagesse de Clean Code par oncle Bob.

Pour moi, cela suggère que le code devrait lire comme une prose. En utilisant des noms descriptifs et en veillant à ce que les méthodes ont une responsabilité unique, nous pouvons écrire du code qui décrit avec précision l'intention des programmeurs évitant le besoin de commentaires (dans la plupart des cas).

Il poursuit l'observation que lorsque nous écrivons du code, nous passons souvent 90% du temps lecture le code environnant et le code dépendant. Par conséquent, en écrivant le code intrinsèquement lisible, nous pouvons être beaucoup plus productifs dans notre écriture de code.


0 commentaires

7
votes

Ma règle de base est que chaque ligne de code n'est écrite qu'une seule fois, mais Lisez 10, 100, ou 1000 fois. Selon cela, l'effort de taper est totalement non pertinent. Tout ce qui compte, c'est l'effort de lire quelque chose.

Bien sûr, cela laisse seulement assez de place pour des opinions subjectives (code> CLRSCRN suffisamment lisible?), mais au moins se réduit le champ.


0 commentaires

2
votes

La plupart des IDs modernes (et même les plus âgés) ont une fonctionnalité complète automatique. Il ne faut donc pas vraiment plus de temps pour taper un identifiant long (une fois qu'il est déclaré bien sûr). Donc, j'irais une clarté sur la brièveté, cela rend le programme beaucoup plus facile à lire et à expliquer davantage


1 commentaires

Malheureusement, ce n'est toujours pas ce courant dans les compilateurs intégrés :-(



7
votes

S'il vous plaît aller directement au chapitre correspondant du "code complet" de Steve McConnell ( Sanitizé Amazon Link ).

Plus précisément, chapitre 11, "la puissance des noms variables".


2 commentaires

I Deuxième suggestion de Rob. Steve McConnell donne des informations détaillées sur de nombreux aspects de nommage. Dans mon expérience, la chose la plus importante est que tout le monde travaillant sur le projet achète dans la même stratégie.


@Jbrwilkinson, oui bon point! Lorsque j'ai écrit la norme de codage C ++ pour une grande entreprise (plus de 200 000 personnes dans le monde), j'ai proposé des raisons pour lesquelles des choix plutôt qu'une série de "tu es ...". Beaucoup de gens ont déclaré qu'ils appréciaient les informations de base et parfois, les explications ont entraîné une amélioration des normes ou des explications.



4
votes

En tant que programmeur, je pense beaucoup plus en tant que programmation que de taper. Donc, le temps supplémentaire en tapant un identifiant plus long n'est pas de pertinence. Et aujourd'hui, mon IDE me soutenait, je n'ai maintenant que de taper des lettres et que l'IDE me permet de choisir des identifiants légaux. Donc, l'argument de la productivité contre des identificateurs plus longs est aujourd'hui plus invalide qu'il n'était qu'il y a quelques années.

de l'autre côté, vous obtenez une lisibilité si vous choisissez des identifiants plus significatifs. Depuis que vous allez lire le code source plus souvent que l'écrire, c'est très important. Un autre point est que les abréviations sont souvent ambiguës. Alors, vous abrégnez le numéro comme non, ou comme num? Cela fait plus probablement des erreurs, car vous choisissez le mauvais identifiant.


0 commentaires

4
votes

toujours en utilisant des mots complets dans des identifiants permet également de maintenir la cohérence.

Avec abréviations, il y a toujours la question de savoir si le mot était abrégé, et si oui comment.

Par exemple, je suis maintenant en train de regarder le code qui a abrégé Abrégli comme ndx ou IDX dans divers endroits.

Pour un contexte très local, il est correct d'abréger, mais j'utiliserais uniquement la première lettre de chaque mot pour garantir la cohérence. Par exemple. sb pour stringbuilder .


1 commentaires

Oh oui, il y a aussi l'absolument horrible DSC / Desc / Description / Description / Description Naming. L'écrire n'aurait pas blessé personne ...



3
votes

Je pense que vous trouverez des faits difficiles précieux, mais beaucoup d'opinion sur ce sujet.

Le Wikipedia page sur ce sujet Liens vers un document sur une analyse coûts / avantages Identifiant Noming Problèmes (Section des liens externes), mais aucune langue que je connaisse ne trouve ses conventions de dénomination officielles ou acceptées sur la base d'une étude «scientifique».

Regarder le code dans un contexte social, vous devez suivre les conventions de nommage imposées par:

  1. Le projet
  2. la société
  3. Le langage de programmation

    .. dans cet ordre.


0 commentaires

8
votes

Je me souviens d'une conversation de Larry Wall il y a quelque temps où il a parlé de la verbosité des identificateurs lorsque vous avez des locuteurs anglais non autochtones dans votre équipe.

ClearScreenBeforerAnderingPage ()

analyse bien si vous êtes un orateur anglais natif. Cependant, il suggère (et des spectacles d'expérience) que:

clear_screen_before_rarerindering_page ()

est beaucoup mieux.

L'effet est exacerbé lorsque vous n'utilisez pas à la fois supérieur et minuscule.


2 commentaires

+1. Excellent point, peu susceptible d'être terriblement évident pour les anglophones indigènes.


J'aime l'idée, mais malheureusement, je pense que cela ne deviendra jamais une norme car la clé de soulignement est l'une des touches les plus douloureuses pour accéder à un clavier. La touche de décalage de gauche met beaucoup de tension sur le poignet et le soulignement est trop proche du passage droit pour le rendre confortable.



5
votes

considère également où il va être utilisé, ClearScreen () est susceptible d'apparaître seul.
Cependant, vous vous enginez lorsque de nouveaux programmeurs qui ont appris que l'identifiant doit être facilement lisible, produisez du code comme.

 y = m*x + C;


2 commentaires

En fait, je grince à Y = M * X + C, il a été obscurci pour quelqu'un sans fond de graphique mathématiques.


On espère que ce code n'est jamais maintenu par un programmeur qui ne comprend même pas le domaine de base du problème



14
votes

Les abréviations ont mis un fardeau beaucoup plus important sur le lecteur. Ils sont ambigus; ils sont indirects; ils sont plus difficiles à discriminer. Ils gèrent aussi l'écrivain, car il devait toujours demander: "Était cette CMD pour commander, ou cmnd ... ou cm?". Ils s'affrontent - une règle d'abréviation donnée pourrait produire la même abréviation pour deux (ou plus) mots différents.

Parce qu'ils sont ambiguës, le lecteur doit prendre le temps de penser à quel mot est destiné; Si le mot lui-même est présent, le lecteur n'a besoin que de penser à sa signification.

Parce qu'ils sont indirects, ils sont analogues à un pointeur - tout comme il y a un peu de temps de traitement consommé par chaque Dréréférence du pointeur, il y a un peu de temps de traitement (humain) consommé et une mémoire supplémentaire occupée, par chaque abréviation.


3 commentaires

J'ai accepté cette réponse parce que c'était le premier voté qui a au moins fourni un raisonnement au lieu d'une opinion.


Tout à fait d'accord. Les abréviations étranges visent des objets, tout comme dans PHP. Quelqu'un peut-il vraiment lire "strtstr" à haute voix et avoir une signification de cela?


Je pense que cette réponse est trop normative. Comme mentionné par de nombreux autres, il est possible d'obtenir des abréviations sélectionnées dans une approche de bon sens. Cela est vrai, en particulier lorsque ces abréviations sont bien connues du programmeur moyen de ce domaine d'activité ou de la langue de programmation.



0
votes

Personne n'a mentionné l'impact négatif sur la lisibilité des identificateurs trop longs. Une fois que vous avez commencé à faire des identifiants de 20, 30, 40 caractères ou plus, vous ne pouvez pas écrire une déclaration raisonnable sur une ligne de texte lisible. Les lignes de code doivent être limitées à environ 80 caractères. Quelque chose de plus est impossible à lire. C'est pourquoi les journaux sont imprimés dans des colonnes. Même cette page Web conserve la colonne de texte étroite afin qu'elle puisse être lue sans avoir à numériser d'avant en arrière.


0 commentaires