C# les normes de codage pour les variables de membre privées
J'ai vu deux approches communes pour les normes de codage pour les variables de membre privées:
class Foo
{
private int _i;
private string _id;
}
et
class Foo
{
private int m_i;
private string m_id;
}
Je crois que le dernier est à venir à partir de C++. Aussi, beaucoup de gens spécifier le type avant de la variable de membre (par exemple,double m_dVal
) pour indiquer que c'est un non-constante variable membre de type double?
Quelles sont les conventions en C#?
- Le lièvre n'est PAS exacte en double que je demande un cas général, et pas seulement m_. thx pour souligner le lien si...
- Que "dupe" a été fermé en S&A. Cette question est valable (et driis' réponse a été très utile, je pourrais ajouter).
Vous devez vous connecter pour publier un commentaire.
Outre les deux que vous mentionnez, il est très commun en C# pour ne pas avoir un préfixe pour les membres privés.
Qu'est ce que j'utilise, et aussi ce qui est recommandé dans Internes de Microsoft règles de nommage.
this.
en C# aussi. Rend le_
'fudge' redondant si vous me demandez...i
ne doit jamais être utilisé comme une propriété ou un nom de champ. Cependant, il est de pratique courante d'utiliser une variable nomméei
l'itération d'une boucle for (et mêmej
pour une boucle imbriquée). La seule fois où j' ne pas ne c'est lors d'une itération dans un 2D/3D de la grille, dans ce cas, je voudrais utiliserx
,y
,z
.Comme l'a noté Brad Abrams: interne des directives de codage:
Je pense que l'important principe ici est que vous êtes cohérent. L'utilisation d'un "_" ou "m" préfixe si c'est ce que vous aimez faire et c'est cohérent avec le reste du code que vous travaillez avec. Quel que soit votre choix, rester avec elle et être cohérent.
Je préfère utiliser votre premier exemple, ou de l'auto-propriétés de ce type, ce qui évite d'avoir privé les champs définis dans votre classe à tous:
Utiliser le
prop
extrait de rendre ces VRAIMENT rapide.Que je me souviens de la lecture de Cadre Des Lignes Directrices De Conception, il n'y a vraiment pas de définir convention pour les variables de membre privées, sauf que l'on ne devrait pas utiliser la notation hongroise et on ne doit pas mettre en majuscule la première lettre du nom de la variable (utilisation de Chameau boîtier). Il y a des citations dans le livre qui prennent en charge vos deux exemples, ainsi que de ne pas utiliser n'importe quel préfixe à tous.
Personnellement, je préfère le "m_" préfixe.
Orientation générale de Microsoft ici:
http://msdn.microsoft.com/en-us/library/ms229002.aspx
Automatique de propriétés en C# sont grands et j'utilise alors quand je peux, mais il y a des cas où ils ne travaillent pas pour moi comme quand on fait le type ou la valeur de vérifier sur une méthode de jeu.
En général: l'utilisation de chameau, de caissons et de ne pas le préfixe de votre nom avec quelque chose comme le trait de soulignement ou un type de préfixe.
ou
Personnellement, j'ai toujours utilisé votre premier exemple de:
En fait, c'est ce que l'ensemble de mon équipe. En outre celui que vous avez mentionné
m_dVal
est connu comme la Notation hongroise, voici la L'Entrée De Wikipedia. La Notation hongroise est fait à l'encontre de nos équipes les normes de codage, donc je ne l'utilise jamais.Le mieux est d'utiliser ce qui est déjà utilisée dans le projet. Si vous démarrez un nouveau projet, faites ce qui est le plus souvent utilisé dans l'entreprise.
Je préfère le trait de soulignement comme préfixe pour le privé non const non readonly champs. Pourquoi? Raisons:
1. Tout simplement à la recherche sur la variable I peut faire la distinction entre le champ & local/paramètre variable. L'utilisation de "ce." pour tous les champs n'est pas une option - ses plus.
2. Il existe une ambiguïté entre le paramètre et du terrain:
Je préfère ne pas utiliser n'importe quel préfixe à tous pour les variables de membre. Pour celles qui sont déclarées en dehors de la méthode, j'utilise "ce.memberVariableName" pour les distinguer de celles qui sont déclarées à l'intérieur de la méthode.
_
J'ai tendance à aller avec le premier de la convention, d'un simple trait de soulignement. Je n'ai pas spécifier le type dans le nom, parce que j'ai Intellisense pour me dire ce que c'est (je sais, ça peut être une béquille).
Préférable de vérifier avec vos collègues de travail ou d'un projet coéquipiers et simplement décider sur une convention, certains d'entre eux sont une sorte de arbitraire.
En C++ identificateurs commençant par _ sont considéré comme une mauvaise pratique, ils devraient être de gauche pour un usage interne. Je pense que c'est pourquoi les préfixant d'un nom de variable avec _ est parfois considéré comme une mauvaise pratique en C# ainsi... même si il n'ya aucune raison pourquoi vous ne pouvez pas le faire, car tous les de la .NET internes sont encapsulées correctement, contrairement au C/C++ bibliothèques standard.