CA1051: Görünür örnek alanlarını bildirme
Özellik | Değer |
---|---|
Kural Kimliği | CA1051 |
Başlık | Görünür örnek alanlarını bildirmeyin |
Kategori | Tasarım |
Hataya neden olan veya bozulmayan düzeltme | Yeni |
.NET 8'de varsayılan olarak etkin | Hayır |
Neden
Türün özel olmayan bir örnek alanı vardır.
Varsayılan olarak, bu kural yalnızca dışarıdan görünen türlere bakar, ancak bu yapılandırılabilir.
Kural açıklaması
Bir alanın birincil kullanım alanının uygulama ayrıntısı olması gerekir. Alanlar veya internal
olmalıdır private
ve özellikleri kullanılarak kullanıma sunulmalıdır. Bir özelliğe erişmek bir alana erişmek kadar kolaydır ve bir özelliğin erişimcilerindeki kod türün özellikleri, hataya neden olan değişikliklere neden olmadan genişledikçe değişebilir.
Yalnızca bir özel veya iç alanın değerini döndüren özellikler, bir alana erişirken aynı performansı sergileyebilecek şekilde iyileştirilir; özellikler yerine dışarıdan görünür alanlar kullanmanın performans kazancı en düşük düzeydedir. Dışarıdan görünür, , protected
ve (Public
, Protected
ve Protected Friend
protected internal
Visual Basic'te) erişilebilirlik düzeylerini ifade ederpublic
.
Ayrıca, ortak alanlar Bağlantı talepleri tarafından korunamaz. (Bağlantı talepleri .NET Core uygulamaları için geçerli değildir.)
İhlalleri düzeltme
Bu kuralın ihlalini düzeltmek için, alanı private
oluşturun veya internal
dışarıdan görünür bir özellik kullanarak kullanıma açın.
Uyarıların ne zaman bastırılması gerekiyor?
Yalnızca tüketicilerin alana doğrudan erişmesi gerektiğinden eminseniz bu uyarıyı gizleyebilirsiniz. Çoğu uygulama için, kullanıma sunulan alanlar özelliklere göre performans veya bakım avantajları sağlamaz.
Tüketicilerin aşağıdaki durumlarda alan erişimine ihtiyacı olabilir:
- ASP.NET Web Forms içerik denetimlerinde.
- Hedef platform, WPF ve UWP için model-view-viewmodel (MVVM) çerçeveleri gibi alanları değiştirmek için öğesini kullandığında
ref
.
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 CA1051
// The code that's violating the rule is on this line.
#pragma warning restore CA1051
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini none
olarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA1051.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.
API'leri dahil et veya hariç tut
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çenekleri kullanın.
Bu seçenekleri yalnızca bu kural, geçerli olduğu tüm kurallar veya bu kategorideki (Tasarım) 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
Bu kuralın üzerinde çalıştırılacak kod tabanınızın hangi bölümlerini erişilebilirliklerine göre 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
Dışlama yapıları
(Structure
Visual Basic'te) alanların analiz edilmemesini sağlayabilirsiniz struct
.
dotnet_code_quality.ca1051.exclude_structs = true
Örnek
Aşağıdaki örnekte bu kuralı ihlal eden bir tür (BadPublicInstanceFields
) gösterilmektedir. GoodPublicInstanceFields
düzeltilen kodu gösterir.
public class BadPublicInstanceFields
{
// Violates rule DoNotDeclareVisibleInstanceFields.
public int instanceData = 32;
}
public class GoodPublicInstanceFields
{
private int instanceData = 32;
public int InstanceData
{
get { return instanceData; }
set { instanceData = value; }
}
}