Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| Özellik | Değer |
|---|---|
| Kural Kimliği | CA1700 |
| Başlık | Sabit listesi değerlerini 'Rezerve' olarak adlandırmayın |
| Kategori | Adlandırma |
| Düzeltme bozucu ya da bozmayan olabilir | Son Dakika |
| .NET 10'da varsayılan olarak etkin | Hayır |
| Geçerli diller | C# ve Visual Basic |
Neden
Enumerasyon üyesinin adı "ayrılmış" sözcüğünü içerir.
Kural açıklaması
Bu kural, adında "ayrılmış" kelimesi bulunan bir numaralandırma üyesinin şu anda kullanılmadığını, ancak gelecekte yeniden adlandırılacak veya kaldırılacak bir yer tutucu olduğunu varsayar. Bir üyenin yeniden adlandırılması veya kaldırılması uyumsuzluk oluşturan bir değişikliktir. Kullanıcıların sadece adında "rezerve edilmiş" ifadesi yer alıyor diye üyeyi yoksaymasını beklememelisiniz. Ayrıca kullanıcıların belgeleri okuyup buna göre hareket etmesine güvenemezsiniz. Ayrıca, ayrılmış üyeler nesne tarayıcılarında ve akıllı tümleşik geliştirme ortamlarında göründüğü için, gerçekte hangi üyelerin kullanıldığı konusunda karışıklığa neden olabilirler.
Ayrılmış üye kullanmak yerine, gelecek sürümde numaralandırmaya yeni bir üye ekleyin. Çoğu durumda, özgün üyelerin değerlerinin değişmesine neden olmadığı sürece yeni üyenin eklenmesi bozucu bir değişiklik değildir.
Sınırlı sayıda durumda, özgün üyeler özgün değerlerini korusa bile bir üyenin eklenmesi uyumsuzluk yaratan bir değişiklik olabilir. Öncelikle, yeni üye, tüm üye listesini kapsayan ve varsayılan durumda bir özel durum oluşturan dönüş değeri üzerinde switch (Visual Basic'te Select) deyimini kullanan arayanları aksatmadan mevcut kod yollarından döndürülemez. İkincil bir sorun, istemci kodunun gibi System.Enum.IsDefinedyansıma yöntemlerinden gelen davranış değişikliğini işleyememesidir. Buna göre, yeni üyenin mevcut yöntemlerden döndürülması gerekiyorsa veya bilinen bir uygulama uyumsuzluğu düşük yansıma kullanımı nedeniyle oluşursa, tek bölünemez çözüm şunlardır:
Özgün ve yeni üyeleri içeren yeni bir numaralandırma ekleyin.
Özgün numaralandırmayı System.ObsoleteAttribute özelliğiyle işaretleyin.
Harici olarak görünen türler veya üyeler ve özgün numaralandırmayı sunanlar için aynı prosedürü izleyin.
İhlalleri düzeltme
Bu kuralın ihlalini düzeltmek için üyeyi kaldırın veya yeniden adlandırın.
Example
// This enum violates the rule.
public enum BadPaymentStatus
{
Pending = 0,
Completed = 1,
ReservedError = 2,
Reserved = 3,
}
// This enum satisfies the rule.
public enum GoodPaymentStatus
{
Pending = 0,
Completed = 1,
Error = 2,
Unknown = 3,
}
Uyarıların ne zaman bastırılması gerekiyor?
Şu anda kullanılan bir üye veya daha önce gönderilen kitaplıklar için bu kuraldan gelen bir uyarıyı gizlemeniz güvenlidir.
Uyarıyı gizleme
Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.
#pragma warning disable CA1700
// The code that's violating the rule is on this line.
#pragma warning restore CA1700
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini noneolarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA1700.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.
Kod çözümleme için konfigüre et
Bu kuralın kod tabanınızın hangi bölümlerinde çalıştırılacaklarını yapılandırmak için aşağıdaki seçeneği kullanın.
Bu seçeneği yalnızca bu kural, geçerli olduğu tüm kurallar veya bu kategorideki (Adlandırma) tüm kurallar için yapılandırabilirsiniz. Daha fazla bilgi için bkz . Kod kalitesi kuralı yapılandırma seçenekleri.
Belirli API yüzeylerini ekleme
api_surface seçeneğini ayarlayarak, bu kuralın erişilebilirliği temelinde kod tabanınızın hangi bölümlerinde çalıştırılacaklarını yapılandırabilirsiniz. Örneğin, kuralın yalnızca genel olmayan API yüzeyinde çalıştırılması gerektiğini belirtmek için projenizdeki bir .editorconfig dosyasına aşağıdaki anahtar-değer çiftini ekleyin:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Not
XXXX
CAXXXX bölümünü geçerli kuralın kimliğiyle değiştirin.
İlgili kurallar
CA2217: Sabit listeleri FlagsAttribute ile etiketlemeyin
CA1712: Enum değerlerini tür adıyla önek kullanmayın
CA1028: Numaralandırma depolaması Int32 olmalıdır