31 votes

Convention de dénomination en c#

Quelle est la convention de dénomination universellement acceptée en C# ? (fonctions, classes, paramètres, variables locales, espaces de noms, etc)

9 votes

Acceptation universelle ? Pas du tout, mon ami.

1 votes

C'est vrai - cependant, C#, plus que la plupart des autres (parce que les directives de MS ont été assez visibles depuis le début) a un ensemble de normes qui sont plus souvent suivies que non.

0 votes

JohnFx... "généralement accepté" aurait été un meilleur terme à utiliser.

69voto

Jon Skeet Points 692016

Microsoft a un excellent un ensemble de lignes directrices sur la conception d'une bibliothèque de classe dont un section sur la dénomination . En bref (exemples entre parenthèses) :

  • Classes/Structures : PascalCase ( WebRequest )
  • Interfaces : PascalCase avec préfixe I ( IDisposable )
  • Méthodes : PascalCase ( ToUpper )
  • Propriétés : PascalCase ( Length )
  • Événements : PascalCase ( Click )
  • Espaces de noms : PascalCase ( System.Collections (il est cependant inhabituel d'avoir deux mots dans une même partie).
  • Variables non constantes, y compris les paramètres : camelCased ( keySelector )
  • Constantes : PascalCase ( Int32.MaxValue )
  • Enums : PascalCase, singulier pour les non-flags et pluriel pour les flags ( HttpStatusCode , BindingFlags )
  • Attributs : PascalCase avec suffixe "Attribute" ( ThreadStaticAttribute )

Les noms privés vous appartiennent, mais j'ai tendance à suivre les mêmes conventions que pour tout le reste. La notation hongroise (dans le style de Win32) est déconseillée, bien que de nombreux endroits utilisent "m_" ou "_" comme préfixe pour les variables d'instance.

0 votes

Belle vue d'ensemble @Jon. Voir cette URL pour quelques exemples de code de ce qui précède : dofactory.com/reference/csharp-coding-standards

5voto

Gear Trooper Points 81

Les directives de Resharper suggèrent


  • Types et espaces de noms MajusculeCamelCase
  • Interfaces IUpperCamelCase
  • Paramètres de type TUpperCamelCase
  • Méthodes, propriétés et événements MajusculeCamelCase
  • Variables locales lowerCamelCase
  • Constantes locales lowerCamelCase
  • Paramètres lowerCamelCase
  • Champs (non privés) MajusculeCamelCase
  • Champs d'instance (privés) _CamelCase inférieure
  • Champ statique (privé) _CamelCase inférieure
  • Champs constants (non privés) MajusculeCamelCase
  • Champs constants (privés) MajusculeCamelCase
  • Champs statiques en lecture seule (non privés) MajusculeCamelCase
  • Champs statiques en lecture seule (privés) MajusculeCamelCase
  • Membres de l'enum MajusculeCamelCase
  • Toutes les autres entités MajusculeCamelCase

4voto

Rex M Points 80372

La norme .NET de Microsoft consiste à utiliser Cas de Pascal pour les espaces de noms, les membres publics et protégés (en gros, tout ce qui est visible par les autres classes). Pour les membres privés et les variables locales, la marge de manœuvre est beaucoup plus large et vous pouvez faire ce qui vous convient le mieux, à vous et à votre équipe.

2voto

Jason Kresowaty Points 8053

Ne sous-estimez pas l'intérêt de respecter autant que possible les conventions de nommage de la plate-forme sur laquelle vous travaillez.

Consultez le matériel de référence pour le .NET Framework afin de trouver des exemples de la manière de "s'intégrer" ( http://msdn.microsoft.com/en-us/library/ms229335.aspx ).

Jon Skeet vous a donné un lien vers un bon article de Microsoft : http://msdn.microsoft.com/en-us/library/ms229042.aspx

Vous pouvez également utiliser le logiciel autonome Microsoft FxCop (ou Code Analysis si vous avez l'édition Team). http://www.microsoft.com/downloads/details.aspx?FamilyID=9aeaa970-f281-4fb0-aba1-d59d7ed09772&DisplayLang=en pour vérifier que les conventions de nommage ont été respectées. Il dispose de règles intégrées pour les conventions Microsoft, ce qui est une autre raison pour laquelle vous devriez les utiliser !

0 votes

Le lien de FxCop semble être mort (il me conduit à microsoft.com/en-us/download à la place).

1voto

kenny Points 9150

Juval Lowy s'est attaqué à cette question dans Programmation des composants .NET voir ceci Lien SO aussi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X