Quelle est la meilleure pratique, les conventions de dénomination les plus couramment acceptées pour les variables privées en C #?
private int myInteger;
private int MyInteger;
private int mMyInteger;
private int _myInteger;
private int _MyInteger;
- Mystérieuse autre option
Lequel utilisez-vous et pourquoi? (Mon entreprise est relativement nouvelle en C # et je voudrais choisir la méthode la plus "acceptée par l'industrie" pour essayer de pénétrer notre norme de codage.)
coding-standards
variables
naming
Vaccano
la source
la source
Réponses:
Les directives de conception de classe MSDN http://msdn.microsoft.com/en-us/library/ta31s3bc.aspx recommandent l'option 1 - myInteger.
J'ai toujours utilisé ce style. J'ai une aversion personnelle pour le caractère _.
la source
myInteger
et ça va correspondre_myInteger
. Mais je ne savais pas que MSDS dit de ne pas utiliser le _myInteger
une variable est locale à une méthode ou à un membre d'une classe privée?this.myInteger
;)this
chaque fois, uniquement dans les méthodes où une variable locale avec le même nom est présente. Cependant, vous devez écrire un symbole supplémentaire à chaque fois si vous utilisez un trait de soulignement. Avec ce que je suis d'accord, c'est qu'il est toujours important de respecter votre accord de style de code local.J'utilise l'option # 4 ci-dessus:
J'aime avoir une indication de la portée dans mes noms de variables, et le soulignement est suffisant à cet effet. C'est aussi assez facile à lire.
la source
J'utilise le schéma de dénomination suivant:
la source
Je pense que l'option 4 est vraiment l'option la plus lisible. Cela vous aide d'avoir à le faire:
Cela rend également tous les membres privés plus visibles. Dans l'exemple suivant, d'où vient le diable
age
? Sans lethis
qualificatif, c'est plus difficile à dire.C'est beaucoup plus facile à comprendre:
la source
Tout d'abord, PascalCasing est généralement réservé aux propriétés publiques, consts, méthodes, etc. de la classe. Je sauterais donc 2 et 5.
Deuxièmement, la notation hongroise est découragée dans le monde .NET, donc (euh, je pense) 3 est tout de suite sorti. En supposant que c'est ce qui se passe avec 3.
Cela laisse avec camelCasing et _camelCasing. J'utilise généralement _camelCasing pour les variables de classe, et plain old camelCasing pour les variables limitées à une méthode ou plus étroite. Le chameau est le standard accepté utilisé pour les arguments de méthode, les noms de variable protégés / privés et les variables dans une méthode ou une portée plus étroite.
J'aime aussi ajouter le trait de soulignement pour que mes variables privées soient regroupées dans mon intellisense. Cependant, je ne fais cela que pour les variables limitées à un type. Variables déclarées dans une méthode ou une portée plus étroite Je laisse le trait de soulignement désactivé. Il est facile de les séparer et de regrouper les variables moins utilisées.
la source
I don't understand why you would use _camelCasing for class variables
you after:I'm talking about the difference between Color.ClassMethod() and myColor.InstanceMethod()
Excusez-moi pendant que je suis confus. Écoutez, j'utilise rarement les variables de classe, il est donc agréable de se souvenir de leurs noms en appuyant sur _ et en les faisant tous apparaître dans l'intellisense gentil et groupé.private int integer
Si vous vous trompez entre les variables membre et locales dans une portée de méthode, vous devrez probablement refactoriser.
la source
integer
pourrait être mieux reformulé, peutvalue
- être ?Je crois que la meilleure façon de le faire (en C # /. Net de toute façon) est une combinaison de 2 et 6:
Il n'y a théoriquement aucune variable ici, mais elle ressemble et agit comme une variable d'instance privée. Si nous devons ajouter une logique métier à cette valeur (c'est une valeur complètement interne, donc nous pouvons faire tout ce que nous voulons après tout), alors elle est déjà «propriété» pour nous. Une tasse de victoire chaude et fumante!
la source
Je fais l'option # 4 parce que c'est à cela que ressemble le SSCLI, mais honnêtement, je ne me soucie pas beaucoup de nommer une variable privée. Le public est une autre histoire.
BTW vous avez oublié m_MyInteger
la source
Je ne l'appellerais "rien"!
Mais je dirais
assez souvent c'est plus agréable que d'avoir des variables explicites. Si j'avais une variable privée explicite, je l'appellerais
int _variableName;
la source
En C ++, j'ai tendance à utiliser _ car je change beaucoup d'éditeurs, ce qui ne me permet pas de voir si c'est privé.
Pour C #, j'ai tendance à laisser le _ loin car Visual Studio me permet de voir s'il est privé.
J'ai tendance à utiliser la méthode Camel Case pour ce faire.
la source
J'utilise 4 (
private int _myInteger;
) car:private int myInteger;
C'est ainsi que je nomme mes variables locales.
private int MyInteger;
C'est ainsi que je nomme les constantes.
private int mMyInteger;
Ce n'est pas du style C #.
private int _MyInteger;
Cela a l'air étrange.
la source
avec le trait de soulignement.
Bill Wagner explique pourquoi dans Effective C # . Mais je ne nommerais jamais un entier mon entier , mieux quelque chose comme _age ou _length. Inclure le TypeName dans le nom de l'instance est une pratique horrible. Les noms doivent être explicites et puisque C # est de type sûr, les types peuvent être trouvés à tout moment.
la source
Vous devez donner un exemple plus spécifique, mais:
private int count
,private int badFileCount
,private static readonly int ReconnectAttemptsLimit
Soit dit en passant, vous obtenez tout cela GRATUITEMENT lorsque vous installez et commencez à utiliser la dernière et la meilleure
MSFT Stylecop
.la source
Je passe par l'option 5:
private int _MyFoo
Je ne vois cependant aucun réel avantage concurrentiel sur _myFoo.
la source
Utilisez camelCasing pour des variables privées comme
myInteger
Considérez un précédent
_
si la variable est une sauvegarde pour une propriété afin de réduire les confusions -Variable
_myProperty
pour la propriétéMyProperty
la source
J'ai ReSharper nommer mes variables, non seulement la mienne mais tout le monde le fait aussi. Il y a une grande cohérence dans le projet.
la source
La norme de codage IDesign C # de Juval Lowy est très populaire. Cette norme recommande de préfixer les variables de membre privé avec "m_" (Option 6). C'est ce que nous faisons dans notre équipe.
Option 4 (
_myInteger
) est une variante acceptable de cette norme.Je n'ai pas aimé la recommandation MSDN (
myInteger
), car il est difficile de distinguer un membre privé d'une variable locale. Leur recommandation, bien sûr, résout ce problème en qualifiant les députés privésthis
, ce qui me semble redondant.la source