web-dev-qa-db-fra.com

Quelles sont les conventions de dénomination en C #?

Il y a quelques questions à ce sujet, mais elles semblaient toutes cibler une partie spécifique de la langue;

Je commence tout juste en C # avec un ami dans une aventure pour créer des jeux pour XBOX Live Arcade. J'ai développé un certain nombre de jeux en utilisant ActionScript 2 et 3 mais je veux commencer à explorer des langages et des appareils plus puissants.

Je veux m'assurer de ne pas éplucher les gens avec qui je commence à travailler (si j'y arrive) ou même juste les gens ici quand j'ai des problèmes et poser une question avec une dénomination des méthodes sérieusement dérangeante/"incorrecte", etc. .

Je l'ai trouvé déroutant dans l'exemple de code que j'ai vu car il semble y avoir de mon point de vue actuel quelques défauts. Je doute qu'une convention de dénomination défectueuse soit utilisée, alors je me rends compte que j'ai juste du mal à comprendre.

Pour autant que je sache, il existe ces conventions:

  • public Type SomeMethod()
  • private Type SomeMethod() - pas de soulignement ou quoi que ce soit?
  • public static Type SomeMethod()
  • private static Type _SomeMethod() - celui-ci semble juste étrange ..
  • public Type someProperty - le remplacer par un boîtier camel pour les propriétés?
  • public static Type SomeProperty - puis retour à la casse Pascal pour statique ..

Dans ActionScript 3, j'ai développé et respecté strictement ces conventions:

  • private var _someVar
  • public var someVar
  • private function _someMethod()
  • public function someMethod()
  • public static var SomeStaticVar
  • public static function SomeStaticMethod()
  • public const SOME_CONSTANT

Existe-t-il une liste complète des conventions de dénomination avec un raisonnement derrière chacune pour que je puisse les comprendre? L'inversion de la syntaxe (c'est-à-dire public Type method() au lieu de public function method():Type) d'AS3 me jette assez au moment où je sais que je dois garder un œil sur la façon dont je nomme les choses, sinon J'oublierai et développerai de mauvaises habitudes, que je préfère clouer et éviter maintenant.

41
Marty

Il existe All-In-One Code Framework Coding Standards de Microsoft qui contient un ensemble complet de règles et de directives. (également disponible ici )

Ce document décrit les directives de style de codage pour la programmation native C++ et .NET (C # et VB.NET) utilisées par l'équipe de projet Microsoft All-In-One Code Framework.

20
Nasreddine

Les deux majuscules principales sont appelées camelCase et PascalCase.

Les règles de base (avec beaucoup de variations) sont

  • Les types utilisent PascalCase
  • les propriétés et méthodes utilisent toujours PascalCase
  • les membres publics (champs, consts) utilisent PascalCase
  • les variables locales utilisent camelCase
  • les paramètres utilisent camelCase

Et bien que la documentation indique que "les champs internes et privés ne sont pas couverts par les directives", il existe des conventions claires:

  • les champs privés utilisent camelCase
  • champs privés qui soutiennent un préfixe de propriété a _
54
Henk Holterman

Il existe de nombreuses conventions de dénomination préconisées par Microsoft pour la programmation .Net. Vous pouvez en lire plus ici .

En règle générale, utilisez PascalCase pour la propriété publique, la méthode et le nom du type.

Pour les paramètres et les variables locales, utilisez camelCase.

Pour les champs privés, choisissez-en un: certains utilisent camelCase, d'autres préfixent _camelCase avec un _.

Une convention courante consiste également à nommer les constantes avec ALLCAPS.

7
Falanwe

C # préfère PascalCasing pour les classes, les propriétés et les méthodes.

Pour autant que je sache, il existe ces conventions:

  • public Type SomeMethod() <- oui
  • private Type SomeMethod() <- correct, pas de soulignement
  • public static Type SomeMethod() <- correct
  • private static Type _SomeMethod() <- cela me semble étrange aussi. le soulignement ne devrait pas être là
  • public Type someProperty <- non, une propriété publique doit être PascalCased (SomeProperty)
  • public static Type SomeProperty - puis revenir à la casse Pascal pour statique ..

Si vous utilisez Visual Studio ou XNA Game Studio (qui, je pense, est un fork de Visual Studio), je recommande fortement de créer une licence ReSharper (à partir du logiciel Jetbrains). Ils vous diront, dans votre éditeur de code, comment se conformer aux conventions C # courantes.

Ajout:

Vous devez utiliser camelCasing pour les champs privés et les arguments de méthode. Pour les champs privés, je les ajoute généralement _withAnUnderscore.

4
danludwig