web-dev-qa-db-fra.com

Suggérer une meilleure pratique pour créer une classe Constantes

Il y a un débat entre les membres de mon équipe sur la déclaration d'une classe Constants. Nous déplaçons les variables constantes dans une classe distincte comme ci-dessous.

public class Constants
{
      public const string StateId = "ST";
      public const string CountryId = "CI";
}

Quelques membres de mon équipe ont suggéré que nous déclarions la classe comme scellée pour éviter de remplacer l'option, et certains suggèrent que nous la marquions comme statique pour éviter la création d'instance de la classe Constant.
Cependant, je préfère l'avoir comme scellé avec un constructeur statique, car cela nous aidera à initialiser les variables en lecture seule dans le futur. Veuillez nous donner quelques conseils à ce sujet.

28
user46506

Ce n'est pas totalement clair quelle est votre question, mais si les valeurs sont vraiment constantes, je ne vois pas de problème avec l'option simple de:

    public static class LocationConstants
    {
        public const string StateId = "ST";
        public const string CountryId = "CI";
    }

L'utilisation de static dans la déclaration de classe signale votre intention aux fins de cette classe.

Marc Gravell décrit certains des problèmes potentiels avec les constantes dans cette réponse Stack Overflow . Vous seul saurez s'il s'agit d'un problème dans votre base de code, mais si les valeurs pourraient changer un jour, utilisez public static readonly au lieu de const, sinon tout code faisant référence aux constantes devra être reconstruit si les valeurs changent.

35
jcorcoran