Suggerisci una best practice per creare la classe Costanti


25

C'è un dibattito tra i membri del mio team sulla dichiarazione di una classe di Costanti. Stiamo spostando le variabili costanti in una classe separata come di seguito.

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

Alcuni membri del mio team hanno suggerito di dichiarare la classe sigillata per evitare l'opzione prioritaria, e alcuni suggeriscono di contrassegnarla come statica per evitare la creazione dell'istanza della classe Constant.
Tuttavia, preferisco averlo come Sealed con un costruttore statico, poiché ci aiuterà a inizializzare le variabili di sola lettura in necessità future. Per favore, dacci qualche consiglio al riguardo.


Qualunque cosa tu vada, una considerazione potrebbe essere quella di utilizzare un'interfaccia nel sistema piuttosto che la stessa classe di costanti per evitare dipendenze tra gli oggetti e una classe di tipo "Global" ???
Dreza,

Quindi accetti di rendere statica la classe e ti stai solo chiedendo se è necessario aggiungere un costruttore statico ora o più tardi? Non vedo opinioni contrarie nella tua domanda, per favore chiarisci.
Doc Brown,


2
Non capisco la tua domanda. Se una classe non ha membri di istanza, puoi contrassegnarla static. Questo è completamente ortogonale alla presenza o assenza di un costruttore statico.
CodesInChaos,

1
Le tue costanti sono effettivamente costanti in senso matematico o è una forma di configurazione?
CodesInChaos,

Risposte:


31

Non è del tutto chiaro quale sia la tua domanda, ma se i valori sono veramente costanti, non vedo un problema con la semplice opzione di:

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

L'uso staticnella dichiarazione di classe segnala la tua intenzione ai fini di questa classe.

Marc Gravell descrive alcuni dei potenziali problemi con le costanti in questa risposta Stack Overflow . Solo tu saprai se questi sono problemi nella tua base di codice, ma se i valori potrebbero mai cambiare, usa public static readonlyinvece di const, altrimenti qualsiasi codice che fa riferimento alle costanti dovrà essere ricostruito se i valori cambiano.


1
Uno degli avvertimenti che puoi trovare usando le variabili const è chiaramente spiegato qui . Poiché le codebase tendono a crescere e a diventare più complesse, è meglio evitare di utilizzarle const, il guadagno in termini di prestazioni di solito non vale i rischi di potenziali problemi in futuro, IMHO. Preferisco usare le public static readonlyvariabili per le costanti.
Joanlofe,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.