Question

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 a l’air étrange. Qu'en penses-tu?

Était-ce utile?

La solution

La convention de dénomination et de capitalisation recommandée consiste à utiliser une casse Pascal pour les constantes (Microsoft dispose d'un outil nommé StyleCop qui documente toutes les conventions préférées et peuvent vérifier la conformité de votre source - même si elle est un peu aussi rétentive 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 le Framework de Microsoft. Directives de conception .

Autres conseils

En fait, c'est

private const int TheAnswer = 42;

Du moins si vous examinez 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 à sa place.

Visuellement, les majuscules sont la solution. 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;

Remarque : les majuscules seront utiles 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 Majuscule ne ferait guère de différence, par 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;
 }

Je continue d’utiliser 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: va avec le boîtier chameau. Peut-être que je changerai aussi de style ;-)

Modifier:

Que quelque chose sent l'hongrois ne soit pas vraiment un argument valable, IMO. La question devrait toujours être: est-ce que cela aide ou ça fait mal?

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

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_notation http://msdn.microsoft.com/en-us/library/ms229045.aspx

L'utilisation de MAJUSCULES n'est pas encouragée comme indiqué ici: Pascal Case est la convention acceptable et SCREAMING CAPS. http://fr.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

Ceci résume assez bien la situation.

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?

* Fabriqué comme Pascal strictement correct, mais je pensais que la question cherchait davantage une réponse à la vie, l'univers et tout .

Dans son article Constantes (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 . Notez toutefois que ces constantes sont définies localement .

On peut dire que la dénomination des constantes visibles de l’extérieur est plus intéressante. Dans la pratique, Microsoft documente ses constantes publiques dans la bibliothèque de classes .NET sous forme de champs . Voici quelques exemples:

Les deux premiers 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 lettre unique tel que E (qui représente la constante mathématique e ).

De plus, dans son document sur les 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 UInt32.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 en lecture seule ).

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 le montrent les exemples présentés dans la question.

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

Le ALL_CAPS est issu des méthodes de travail en C et C ++, je crois. Cet article ici explique comment les différences de style sont apparues.

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.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top