Między członkami mojego zespołu trwa debata na temat deklaracji klasy Constants. Przenosimy zmienne stałe do osobnej klasy, jak poniżej.
public class Constants
{
public const string StateId = "ST";
public const string CountryId = "CI";
}
Kilku członków mojego zespołu zasugerowało, aby zadeklarować klasę jako zapieczętowaną, aby uniknąć zastąpienia opcji, a niektórzy sugerują, aby oznaczyć ją jako statyczną, aby uniknąć tworzenia instancji klasy Constant.
Jednak wolę mieć to jako zamknięte z konstruktorem statycznym, ponieważ pomoże nam to zainicjować zmienne tylko do odczytu w przyszłości. Proszę dać nam kilka rad na ten temat.
static
. Jest to całkowicie ortogonalne wobec obecności lub braku statycznego konstruktora.Odpowiedzi:
Nie jest do końca jasne, jakie jest twoje pytanie, ale jeśli wartości są naprawdę stałe, nie widzę problemu z prostą opcją:
Użycie
static
w deklaracji klasy sygnalizuje twój zamiar dla celów tej klasy.Marc Gravell opisuje niektóre potencjalne problemy ze stałymi w tej odpowiedzi Przepełnienie stosu . Tylko ty będziesz wiedział, czy są to problemy w twojej bazie kodu, ale jeśli wartości mogą kiedykolwiek ulec zmianie, użyj
public static readonly
zamiastconst
, w przeciwnym razie kod odnoszący się do stałych będzie musiał zostać odbudowany, jeśli wartości się zmienią.źródło
const
wydajności zwykle nie jest warte ryzyka potencjalnego problemu w przyszłości, IMHO. Wolę używaćpublic static readonly
zmiennych dla stałych.