Je viens de commencer à utiliser ReSharper (pour C #) et j'aime un peu son détecteur d'odeurs de code, il me montre certaines choses sur mon écriture que je voulais corriger il y a longtemps (principalement les conventions de dénomination des variables).
Cela m'a amené à reconsidérer certaines de mes conventions d'appellation pour les méthodes et les variables d'instance. ReSharper suggère que la variable d'instance soit en minuscule et commence par un trait de soulignement. Pendant un certain temps, je voulais faire en sorte que toutes mes variables locales réduisent la casse du chameau, mais le trait de soulignement est-il nécessaire? Trouvez-vous cela confortable? Je n'aime pas cette convention mais je ne l'ai pas encore essayée, qu'en pensez-vous?
La deuxième chose qu'il m'a incité à réévaluer est mes conventions de dénomination pour les gestionnaires d'événements GUI. J'utilise généralement la norme VS de ControlName_Action et mes contrôles utilisent généralement la notation hongroise (comme suffixe, pour aider à clarifier dans le code ce qui est visible pour l'utilisateur et ce qui ne l'est pas lorsqu'il s'agit d'une variable de nom similaire), donc je me retrouve avec OK_btn_Click ( ), qu'en pensez-vous? Dois-je succomber à la convention ReSharper ou existe-t-il d'autres options également valables?
Par rapport à
Une chose que j'aime beaucoup dans l'utilisation du trait de soulignement, c'est qu'il réduit considérablement l'utilisation de "ceci".
Considérer:
sans le soulignement, il faudrait écrire:
ce qui introduit potentiellement l'erreur subtile de:
De plus, l'achèvement du code est plus propre car en attachant simplement le trait de soulignement, vous obtenez une liste des seuls champs privés, alors qu'avec "ceci", vous obtenez une liste de tout.
Par rapport à
le Framework Design Guidelines: Conventions, Idoms, and Patterns for Reusable .NET bibliothèques dit:
Laissant peu de place à l'ambiguïté:)
la source
this.size
c'est beaucoup plus clair que_size
. L'utilisation du nom souligné n'empêche pas l'erreur subtile, vous pouvez toujours vous attribuer une taille, bien que nous espérons que votre compilateur vous le dira.this.size
et_size
est la cohérence. Avecthis.size
c'est qu'il est facultatif. Par exemple, s'il y avait un autre champ privé appeléname
, il n'y a pas besoin de l'utiliserthis.name
dans le code, je pourrais tout aussi bien l'utilisername
sans heurts. Parce quethis
peut être utilisé parfois, et pas à d'autres moments, c'est pourquoi l'utilisationthis
est inférieure. En revanche, il n'y a aucune ambiguïté avec_
...La cohérence est vraiment la clé. Cela et la clarté, c'est-à-dire ne soyez pas cryptique ou n'essayez pas de sauvegarder la frappe en abrégeant tout. Intellisense est votre économiseur de frappe, pas des noms cryptés (mais courts!).
la source
order.Size()
(par opposition àorder.getSize()
) mais comme d'autres bibliothèques utilisent des getters et setters, mon code ne sera pas cohérent.En C #, le démarrage d'un nom protégé ou public avec un trait de soulignement est contraire à la spécification de langage commun. C'est correct uniquement en cas de membres privés.
Depuis MSDN:
Voir: http://msdn.microsoft.com/en-us/library/12a7a7h3.aspx
Ici, vous pouvez lire l'avertissement sur le trait de soulignement:
Voir: http://msdn.microsoft.com/en-us/library/81ed9a62.aspx
Les membres protégés posent problème car vous pouvez hériter d'une classe écrite dans une autre langue.
Mais ce n'est peut-être pas un problème dans votre cas si vous n'avez pas besoin de code compilant CLS.
la source
J'aime les traits de soulignement. Vous savez à première vue que la variable est un membre de la classe et privée.
Bien sûr, l'IDE peut vous le dire lorsque vous passez la souris dessus, mais le "premier coup d'œil" est imbattable. Vous savez ce qu'est une variable locale et ce qu'est une variable membre avec vos yeux seuls. Aucun défilement ou survol de la souris requis.
Vous pouvez utiliser le mot clé "this" mais _ est plus court pour une meilleure numérisation horizontale. Les noms descriptifs sont généralement souhaités, mais lorsque quelque chose est une convention établie, il vaut mieux avoir 1 caractère. par exemple, en utilisant la lettre i comme index lors de la boucle d'un tableau. Comme il s'agit d'une convention établie selon laquelle i est un index, vous bénéficiez de la possibilité de numérisation sans l'inconvénient de vous demander ce que signifie «i».
la source
Je suis généralement d'accord avec ce que disent les autres, mais en ce qui concerne les outils et les chaînes d'outils, je suis paresseux et aime la vie facile. Je trouve que la vie est souvent plus facile à faire comme ils le suggèrent. Les raisons sont
Donc, je pense que si vous pouvez trouver une raison valable de reconfigurer les outils sur lesquels vous venez de dépenser une fortune, faites-le par tous les moyens. Si vous ne pouvez pas justifier le changement, ne le faites pas.
Gardez à l'esprit que chaque changement a un coût permanent (réel et caché) à maintenir. Moins il y en a, plus le coût est faible. Par exemple - ce nouveau gars que j'ai mentionné - aucun changement ne signifie qu'il peut lire leur manuel. Reconfigurez - vous devez rédiger l'addendum, le ranger avec d'autres trucs, le retirer et le faire lire après avoir lu leur manuel. Ce n'est peut-être pas un problème pour un magasin de 2 hommes, mais qu'en est-il d'un magasin de 100 hommes?
la source
Les deux règles que vous demandez, soulignent au début des noms de champs privés et les noms de méthode sont généralement considérés comme la norme dans les cercles de développement C #. En s'adaptant à ces conventions, votre code sera immédiatement plus compréhensible pour les autres développeurs, car c'est l'état d'esprit dans lequel ils sont habitués à fonctionner.
Le suffixe de Label, RadioButton, etc. pour vos commandes est également généralement considéré comme la norme. Il existe souvent plusieurs contrôles pour un même concept (par exemple, une étiquette et une zone de texte), et ce suffixe est très utile. La vraie notation hongroise a été abandonnée il y a longtemps car elle a été bâtie en quelque chose qui n'exprime pas son intention d'origine, qui était le contexte de la variable et non le type, la taille, etc.
la source
Dans mon cas, l'utilisation de camelcase et de traits de soulignement aide à nommer (lire: long) les noms de variables et à compléter le code. Je ne sais pas trop comment fonctionne l'auto-complétion de Visual Studio mais dans QtCreator et dans une moindre mesure, Eclipse, on peut taper, par exemple
et l'ont étendu à
Économise un peu de frappe au cas où vous auriez des noms comme
que j'ai tendance à produire en "mode de nommage descriptif".
À l'aide de soulignements, je peux déterminer le nom que je souhaite compléter automatiquement
ou
J'espère que mon explication est assez claire :)
la source