Schlagen Sie eine bewährte Methode zum Erstellen der Konstanten-Klasse vor

25

Zwischen meinen Teammitgliedern gibt es eine Debatte über die Deklaration einer Constants-Klasse. Wir verschieben die konstanten Variablen in eine separate Klasse wie unten.

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

Einige meiner Teammitglieder schlugen vor, die Klasse als versiegelt zu deklarieren, um ein Überschreiben der Option zu vermeiden, und einige schlagen vor, sie als statisch zu markieren, um die Instanzerstellung der Constant-Klasse zu vermeiden.
Ich bevorzuge es jedoch, es mit einem statischen Konstruktor als Sealed zu haben, da es uns helfen wird, die schreibgeschützten Variablen in Zukunft zu initialisieren. Bitte geben Sie uns hierzu einen Rat.

user46506
quelle
Wie auch immer Sie vorgehen, eine Überlegung könnte darin bestehen, eine Schnittstelle im System anstelle der Konstantenklasse selbst zu verwenden, um Abhängigkeiten zwischen den Objekten und einer Klasse vom Typ "Global" zu vermeiden.
Dreza
Sie stimmen also zu, die Klasse statisch zu machen und zu fragen, ob Sie jetzt oder später einen statischen Konstruktor hinzufügen sollten? Ich sehe keine gegenteiligen Meinungen in Ihrer Frage, bitte klären Sie.
Doc Brown
2
Ich verstehe deine Frage nicht. Wenn eine Klasse keine Instanzmitglieder hat, können Sie sie markieren static. Dies ist völlig orthogonal zum Vorhandensein oder Fehlen eines statischen Konstruktors.
CodesInChaos
1
Sind Ihre Konstanten tatsächlich Konstanten im mathematischen Sinne oder ist dies eine Form der Konfiguration?
CodesInChaos

Antworten:

31

Es ist nicht ganz klar, was Ihre Frage ist, aber wenn die Werte wirklich konstant sind, sehe ich kein Problem mit der einfachen Option:

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

Die Verwendung staticin der Klassendeklaration signalisiert Ihre Absicht für den Zweck dieser Klasse.

Marc Gravell beschreibt einige der potenziellen Probleme mit Konstanten in dieser Stack Overflow-Antwort . Nur Sie werden wissen, ob dies ein Problem in Ihrer Codebasis ist. Wenn sich die Werte jedoch ändern könnten , verwenden Sie public static readonlystattdessen const. Andernfalls muss der Code, der sich auf die Konstanten bezieht, neu erstellt werden, wenn sich die Werte ändern.

jcorcoran
quelle
1
Einer der Einsprüche Sie const Variablen ist klar erläutert finden hier . Da Codebasen tendenziell wachsen und komplexer werden, ist es besser, die Verwendung zu vermeiden const. Der Leistungszuwachs ist normalerweise nicht das Risiko potenzieller Probleme in der Zukunft wert, IMHO. Ich bevorzuge die Verwendung von public static readonlyVariablen für Konstanten.
Joanlofe