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()
19 Réponses :
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. P>
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.
J'irais une clarté sur la verbosité ou Brevit.
ClearScreenBeforeRerenderingPage()
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 ().
rien de mal avec un identifiant court tant que c'est évident ce que cela signifie. p>
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 :) p>
Certainement .NET Les développeurs doivent suivre le .NET Nommage Directives . P>
Ceci suggère que les noms complets doivent être utilisés et non abréviations: p>
N'utilisez pas d'abréviations ou de contractions comme parties des noms d'identifiant. Par exemple, utilisez GetWinDow au lieu de Getwin. P> blockQuote>
Ma préférence personnelle est d'avoir des identifiants publics verbeux et des courts courts privés. P>
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. P>
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. P>
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.
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. p>
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. P>
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. p>
La ligne de fond est toujours - laissez les choses de sens (oui, très subjectives).
Wikibook Recherche - identifiants de nommage < / strong> p>
aussi il faut penser si le contexte est simple le L'identifiant doit refléter cela en conséquence. p> p>
II est encore meilleur au cas où vous voudrez jamais rechercher vos itérateurs
Personnellement, j'aime essayer de suivre la sagesse de Clean Code par oncle Bob. P>
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). P>
Il poursuit l'observation que lorsque nous écrivons du code, nous passons souvent 90% du temps
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. p>
Bien sûr, cela laisse seulement assez de place pour des opinions subjectives (code> CLRSCRN code> suffisamment lisible?), mais au moins se réduit le champ. P>
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 p>
Malheureusement, ce n'est toujours pas ce courant dans les compilateurs intégrés :-(
S'il vous plaît aller directement au chapitre correspondant du "code complet" de Steve McConnell ( Sanitizé Amazon Link ). P>
Plus précisément, chapitre 11, "la puissance des noms variables". P>
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.
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. P>
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. P>
toujours en utilisant des mots complets dans des identifiants permet également de maintenir la cohérence. p>
Avec abréviations, il y a toujours la question de savoir si le mot était abrégé, et si oui comment. P>
Par exemple, je suis maintenant en train de regarder le code qui a abrégé Abrégli comme 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. ndx code> ou
IDX code> dans divers endroits. P>
sb code> pour
stringbuilder code>. p>
Oh oui, il y a aussi l'absolument horrible DSC / Desc / Description / Description / Description Naming. L'écrire n'aurait pas blessé personne ...
Je pense que vous trouverez des faits difficiles précieux, mais beaucoup d'opinion sur ce sujet. p>
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». p>
Regarder le code dans un contexte social, vous devez suivre les conventions de nommage imposées par: p>
.. dans cet ordre. P>
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. P>
analyse bien si vous êtes un orateur anglais natif. Cependant, il suggère (et des spectacles d'expérience) que: p>
est beaucoup mieux. P>
L'effet est exacerbé lorsque vous n'utilisez pas à la fois supérieur et minuscule. P> ClearScreenBeforerAnderingPage () Code> P>
clear_screen_before_rarerindering_page () code> p>
+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.
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;
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
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. P>
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. P>
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. P >
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.
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. P>
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.