web-dev-qa-db-fra.com

Convention de nommage C # pour les constantes?

private const int THE_ANSWER = 42;

ou

private const int theAnswer = 42;

Personnellement, je pense qu'avec les IDE modernes, nous devrions utiliser camelCase, car ALL_CAPS semble étrange. Qu'est-ce que tu penses?

372
mmiika

La convention de dénomination et de mise en majuscule recommandée consiste à utiliser une casse Pascal pour les constantes (Microsoft possède un outil appelé StyleCop qui documente toutes les conventions préférées et peut vérifier la conformité de votre source, bien qu'il s'agisse d'une un peu aussi rétentif analement pour les goûts de nombreuses personnes). par exemple.

private const int TheAnswer = 42;

La convention de capitalisation Pascal est également documentée dans les directives de conception du framework de Microsoft .

437
Greg Beech

En fait, c'est

private const int TheAnswer = 42;

Du moins si vous regardez la bibliothèque .NET, quelle OMI est le meilleur moyen de décider des conventions de dénomination - pour que votre code ne paraisse pas à la place.

65
bh213

Visuellement, les majuscules sont la voie à suivre. C'est tellement reconnaissable de cette façon. Par souci d'unicité et ne laissant aucune chance de deviner, je vote pour UPPER_CASE!

const int THE_ANSWER = 42;

Note: La majuscule sera utile lorsque des constantes doivent être utilisées dans le même fichier en haut de la page et à des fins intellisense; toutefois, s'ils devaient être transférés dans une classe indépendante, utiliser Majuscules ne ferait guère de différence, à titre d'exemple:

public static class Constant
{
    public static readonly int Cons1 = 1;
    public static readonly int coNs2 = 2;
    public static readonly int cOns3 = 3;
    public static readonly int CONS4 = 4;
}

// Call constants from anywhere
// Since the class has a unique and recognizable name, Upper Case might might lose its charm
private void DoSomething(){
var getCons1 = Constant.Cons1;
var getCons2 = Constant.coNs2;
var getCons3 = Constant.cOns3;
var getCons4 = Constant.CONS4;
 }
51
usefulBee

Je vais toujours avec les majuscules pour les valeurs const, mais c'est plus par habitude que pour une raison particulière.

Bien sûr, il est facile de voir immédiatement que quelque chose est un const. La question qui m'est posée est la suivante: avons-nous vraiment besoin de cette information? Cela nous aide-t-il de quelque manière à éviter les erreurs? Si j'attribue une valeur à la constante, le compilateur me dira que j'ai fait quelque chose de stupide.

Ma conclusion: aller avec le boîtier chameau. Peut-être que je changerai aussi de style ;-)

Edit:

Que quelque chose sent le hongrois n’est pas vraiment un argument valable, IMO. La question devrait toujours être: est-ce que ça aide, ou est-ce que ça fait mal?

Il y a des cas où l'hongrois aide. Pas beaucoup de nos jours, mais ils existent toujours.

22
Treb

Tout d'abord, la notation en hongrois consiste à utiliser un préfixe pour afficher le type de données d'un paramètre ou son utilisation. Les conventions de nommage de Microsoft pour dire non à la notation hongroise http://en.wikipedia.org/wiki/Hungarian_notationhttp://msdn.Microsoft.com/en-us/library/ms229045 .aspx

L’utilisation de UPPERCASE n’est pas encouragée comme indiqué ici: Pascal Case est la convention acceptable et SCREAMING CAPS. http://en.wikibooks.org/wiki/C_Sharp_Programming/Naming

Microsoft indique également ici que UPPERCASE peut être utilisé si cela est fait pour correspondre au schéma existant. http://msdn.Microsoft.com/en-us/library/x2dbyw72.aspx

Cela résume à peu près tout.

15
user31939

Laissez le hongrois aux Hongrois.

Dans l'exemple, je laisserais de côté l'article définitif et irais simplement avec

private const int Answer = 42;

Est-ce la réponse ou est-ce la réponse?

* Made edit comme étant Pascal parfaitement correct, cependant je pensais que la question cherchait davantage une réponse à la vie, l'univers et tout .

12
dove

Dans son article Constants (Guide de programmation C #) , Microsoft donne l'exemple suivant:

class Calendar3
{
    const int months = 12;
    const int weeks = 52;
    const int days = 365;

    const double daysPerWeek = (double) days / (double) weeks;
    const double daysPerMonth = (double) days / (double) months;
}

Ainsi, pour les constantes, il apparaît que Microsoft recommande l'utilisation de camelCasing . Mais notez que ces constantes sont définies localement .

On peut soutenir que la dénomination des constantes visibles de l'extérieur présente un intérêt plus grand. En pratique, Microsoft documente ses constantes publiques dans la bibliothèque de classes .NET sous forme de champs . Voici quelques exemples:

Les deux premiers sont des exemples de PascalCasing . Le troisième semble suivre les conventions de capitalisation de Microsoft pour un acronyme de deux lettres (bien que pi ne soit pas un acryonyme). Et le quatrième semble suggérer que la règle pour un acryonyme de deux lettres s’étend à un acronyme ou à une seule lettre tel que E (qui représente la constante mathématique e ).

De plus, dans son document Conventions de capitalisation, Microsoft indique très directement que les identificateurs de champ doivent être nommés via PascalCasing et donne les exemples suivants pour MessageQueue.InfiniteTimeout et Int32.Min :

public class MessageQueue
{
    public static readonly TimeSpan InfiniteTimeout;
}

public struct UInt32
{
    public const Min = 0;
}

Conclusion: utilisez PascalCasing pour les constantes publiques (documentées sous la forme de champs const ou static readonly).

Enfin, pour autant que je sache, Microsoft ne préconise pas de conventions de dénomination ou de capitalisation spécifiques pour les identifiants privés , comme indiqué dans les exemples présentés dans la question.

11
DavidRR

ALL_CAPS est tiré des méthodes de travail C et C++, je crois. Cet article ici explique l’origine des différences de style.

Dans les nouveaux IDE tels que Visual Studio, il est facile d'identifier les types, la portée et s'ils sont constants, de sorte que cela n'est pas strictement nécessaire.

Les logiciels FxCop et Microsoft StyleCop vous aideront à vous guider et à vérifier votre code afin que tout le monde fonctionne de la même manière.

6
John

En fait, j'ai tendance à préférer PascalCase ici - mais par habitude, je suis coupable de UPPER_CASE ...

6
Marc Gravell