Sabitler sınıfı oluşturmak için en iyi uygulamayı önerin


25

Takım üyelerimin arasında Sabitler dersi ilanı hakkında bir tartışma var. Sabit değişkenleri aşağıdaki gibi ayrı bir sınıfa taşıyoruz.

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

Ekip üyelerimden birkaçı, seçeneği geçersiz kılmaktan kaçınmak için sınıfı mühürlü ilan ettiğimizi önerdi ve birkaçı Constant sınıfının örnek oluşumunu önlemek için durağan olarak işaretlememizi önerdi.
Ancak, statik bir kurucu ile Sealed olarak olmasını tercih ederim, çünkü gelecekteki ihtiyaç içinde salt okunur değişkenleri başlatmamıza yardımcı olacaktır. Lütfen bize bu konuda bir tavsiye verin.


Hangisine giderseniz gidin, göz önünde bulundurulacak şeylerden biri, nesneler ve bir "Global" tür sınıfı arasındaki bağımlılıklardan kaçınmak için sistemde bir arabirim kullanmak olabilir.
dreza

Yani sınıfı statik kılmaya ve sadece şimdi mi yoksa sonradan bir statik kurucu ekleyip eklemeyeceğinizi sormaya mı karar verdiniz? Sorunuzda hiçbir karşı görüş görmüyorum, lütfen açıklığa kavuşturun.
Doktor Brown


2
Sorunu anlamadım. Bir sınıfın örnek üyeleri yoksa, onu işaretleyebilirsiniz static. Bu, statik bir yapıcının varlığına veya yokluğuna tamamen diktir.
CodesInChaos

1
Sabitleriniz gerçekte matematiksel anlamda sabit midir, yoksa bu bir yapılandırma biçimi midir?
CodesInChaos

Yanıtlar:


31

Sorunuzun ne olduğu tam olarak belli değil, ancak değerler gerçekten sabitse, basit seçenekle ilgili bir sorun görmüyorum:

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

staticSınıf bildiriminde kullanmak , bu sınıfın amacına yönelik niyetinizi gösterir.

Marc Gravell, bu Yığın Taşması cevabında sabit olan bazı olası sorunları açıklar . Sadece bunlar kod temeli bir sorun olup olmadığını bilecek, ama değerler eğer olabilir hiç kullanımını değiştirmek public static readonlyyerine const, başka sabitler atıfta herhangi bir kod değerleri değişime eğer yeniden inşa edilmesi gerekecektir.


1
Const değişkenlerini kullanarak bulabileceğiniz uyarılardan biri burada açıkça açıklanmıştır . Kod tabanları büyümek ve daha karmaşık hale gelme eğiliminde olduğundan, kullanmaktan kaçınmak daha iyidir const, performans kazancı genellikle gelecekteki potansiyel sorunların riski değildir, IMHO. public static readonlyDeğişkenleri sabitler için kullanmayı tercih ederim .
joanlofe
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.