Convention de capitalisation pour les champs protégés C #

17

Quelles sont les conventions de capitalisation pour les noms de champs protégés en C #?

Est-ce _myVar (comme un champ privé) ou MyVar (comme des propriétés)?

Louis Rhys
la source
3
Voulez-vous vraiment avoir des champs protégés? La plupart des raisons de ne pas avoir de champs publics s'appliquent également aux champs protégés, donc je pense qu'il est préférable d'utiliser des propriétés protégées à la place.
svick
dans les cas de test, il est normalement pratique d'avoir des champs protégés .. mais peut-être que vous avez raison, cela peut être changé en propriétés. Mais si je veux un champ protégé, quelle est la convention de dénomination?
Louis Rhys
2
Êtes-vous sûr que _myVar est la bonne convention pour les champs privés? (vous faites l'hypothèse que c'est le cas) N'essayez pas de déclencher une guerre religieuse ici, essayez simplement de dire que si vous avez opté pour une sorte de règle arbitraire pour les champs privés, vous pouvez choisir une autre règle pour vos champs protégés. Le seul conseil est d'être cohérent.
Marek

Réponses:

13

Il y a quelque chose qui s'appelle Design Guidelines for Developing Class Libraries qui est écrit par Microsoft.

Il dit ceci:

Ne fournissez pas de champs d'instance publics ou protégés.

Les champs publics et protégés ne sont pas bien versionnés et ne sont pas protégés par des exigences de sécurité d'accès au code. Au lieu d'utiliser des champs visibles publiquement, utilisez des champs privés et exposez-les via des propriétés.

Aussi bien que:

  • Utilisez la casse Pascal dans les noms de champ

  • N'utilisez pas de préfixe pour les noms de champ. Par exemple, n'utilisez pas g_ ou s_ pour distinguer les champs statiques des champs non statiques.

Quant au _préfixe, il est utilisé aussi souvent que la this.convention (pour autant que j'ai vu parcourir le code source dans CodePlex / GitHub). ReSharper, par exemple, promeut _dans ses vérifications de nommage.

jgauffin
la source
vous avez été un peu sélectif en n'incluant pas le "Ne pas utiliser de préfixe pour les noms de champs". de MSDN à côté de la règle de casse Pascal :) S'il est vrai que le resharper par défaut favorise le préfixe _, si vous citez les conventions MSDN à mon humble avis, vous ne devez pas les mélanger avec vos propres impressions.
Marek
2
qu'est-ce que cela signifie "ne pas bien versionner"? Êtes-vous en train de dire qu'étant donné que le champ protégé n'est pas recommandé, il n'existe aucune directive concernant son nom? Quoi qu'il en soit, Resharper semble recommanderMyVar
Louis Rhys
2
@Marek: J'ai inclus ma propre préférence. J'ai simplement indiqué ce que Resharper préfère. Et ce n'était pas mon intention d'être sélectif. Réponse mise à jour
jgauffin
1
@jgauffin Mis à part les consommateurs qui utilisent la réflexion contre votre code, la modification d'un champ en une propriété n'est-elle pas transparente pour les appelants? Comment la modification d'un champ protégé en une propriété protégée du même nom rompt-elle la compatibilité?
Quantic
1
il rompt la compatibilité binaire: msdn.microsoft.com/en-us/library/ta31s3bc(v=vs.71).aspx
jgauffin