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 | CA1710 |
| Başlık | Tanımlayıcılar doğru eki kullanmalıdır |
| 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
Tanımlayıcı doğru son eke sahip değil.
Varsayılan olarak, bu kural yalnızca dışarıdan görünen tanımlayıcılara bakar, ancak bu yapılandırılabilir.
Kural açıklaması
Kurala göre, belirli temel türleri genişleten veya belirli arabirimleri uygulayan türlerin adlarının veya bu türlerden türetilen türlerin, temel tür veya arabirimle ilişkili bir son eki vardır.
Adlandırma kuralları, ortak dil çalışma zamanını hedefleyen kitaplıklar için ortak bir görünüm sağlar. Bu, yeni yazılım kitaplıkları için gereken öğrenme eğrisini azaltır ve kitaplığın yönetilen kod geliştirme konusunda uzmanlığı olan biri tarafından geliştirildiğine dair müşteri güvenini artırır.
Aşağıdaki tabloda, ilişkili soneklere sahip temel türler ve arabirimler listelenmiştir.
| Temel tür/Arayüz | Sonek |
|---|---|
| System.Attribute | Attribute |
| System.EventArgs | EventArgs |
| System.Exception | Exception |
| System.Collections.ICollection | Collection |
| System.Collections.IDictionary | Dictionary |
| System.Collections.IEnumerable | Collection |
| System.Collections.Generic.IReadOnlyDictionary<TKey,TValue> | Dictionary |
| System.Collections.Queue |
Collection veya Queue |
| System.Collections.Stack |
Collection veya Stack |
| System.Collections.Generic.ICollection<T> | Collection |
| System.Collections.Generic.IDictionary<TKey,TValue> | Dictionary |
| System.Data.DataSet | DataSet |
| System.Data.DataTable |
Collection veya DataTable |
| System.IO.Stream | Stream |
| System.Security.IPermission | Permission |
| System.Security.Policy.IMembershipCondition | Condition |
| Olay işleyici temsilcisi. | EventHandler |
ICollection uygulayan ve sözlük, yığın veya kuyruk gibi genelleştirilmiş veri yapıları olan türlerin, türün amaçlanan kullanımıyla ilgili anlamlı bilgiler veren adlarla adlandırılmasına izin verilir.
ICollection uygulayan ve belirli öğelerden oluşan bir koleksiyon olan türler, Collectionsözcüğüyle biten adlara sahiptir. Örneğin, bir Queue nesne koleksiyonunun adı QueueCollectionolacaktır.
Collection soneki, koleksiyon üyelerinin foreach ( Visual Basic'teFor Each) deyimi kullanılarak numaralandırılabildiğini gösterir.
IDictionary veya IReadOnlyDictionary<TKey,TValue> uygulayan türler, Dictionary veya IEnumerablede uygulasa bile ICollection sözcüğüyle biten adlara sahiptir.
Collection ve Dictionary sonek adlandırma kuralları, kullanıcıların aşağıdaki iki numaralandırma desenini ayırt etmesine olanak tanır.
Collection soneki olan türler bu numaralandırma desenini izler.
foreach(SomeType x in SomeCollection) { }
Dictionary soneki olan türler bu numaralandırma desenini izler.
foreach(SomeType x in SomeDictionary.Values) { }
Bir DataSet nesnesi, ki bu bir DataTable nesneler koleksiyonu olan, ve bu DataTable nesneleri de, diğerlerinin yanı sıra, System.Data.DataColumn ve System.Data.DataRow nesnelerinden oluşan koleksiyonlardır. Bu koleksiyonlar temel ICollection sınıf aracılığıyla uygulanırSystem.Data.InternalDataCollectionBase.
İhlalleri düzeltme
Türü, doğru terimle sonlandıracak şekilde yeniden adlandırın.
Uyarıların ne zaman bastırılması gerekiyor?
Tür genişletilebilen veya rastgele bir dizi farklı öğeyi barındıracak genelleştirilmiş bir veri yapısıysa, Collection sonekini kullanmak için bir uyarıyı bastırmak güvenlidir. Bu durumda, veri yapısının uygulanması, performansı veya diğer özellikleri hakkında anlamlı bilgiler sağlayan bir ad anlamlı olabilir (örneğin, BinaryTree). Türün belirli bir türdeki bir koleksiyonu temsil ettiği durumlarda (örneğin, StringCollection), sonek, türün foreach ifadesi kullanılarak numaralandırılabileceğini gösterdiğinden, bu kuraldan kaynaklanan bir uyarıyı gizlemeyin.
Diğer sonekler için bu kuraldan bir uyarıyı gizlemeyin. Sonek, hedeflenen kullanımın tür adından belirgin olmasını sağlar.
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 CA1710
// The code that's violating the rule is on this line.
#pragma warning restore CA1710
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.CA1710.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çenekleri kullanın.
Bu seçenekleri yalnızca bu kural için, uyguladıkları tüm kurallar için veya bu kategorideki tüm kurallar için (Adlandırma) 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.
Dolaylı temel türleri dışla
Dolaylı temel türlerin kuraldan dışlanıp dışlanmayacağını yapılandırabilirsiniz. Varsayılan olarak, bu seçenek true olarak ayarlanır ve bu da çözümlemeyi geçerli temel türle kısıtlar.
dotnet_code_quality.CA1710.exclude_indirect_base_types = false
Ek olarak gerekli sonekler
Projenizdeki bir .editorconfig dosyasına aşağıdaki anahtar-değer çiftini ekleyerek ek gerekli sonekler sağlayabilir veya bazı sabit kodlanmış soneklerin davranışını geçersiz kılabilirsiniz:
dotnet_code_quality.CA1710.additional_required_suffixes = [type]->[suffix]
Birden çok değeri bir | karakterle ayırın. Türler aşağıdaki biçimlerden birinde belirtilebilir:
- Yalnızca tür adı (içeren tür veya ad alanına bakılmaksızın adı olan tüm türleri içerir).
- Simgenin dokümantasyon kimliği formatında ve isteğe bağlı
T:ön ek içeren tam nitelikli adlar.
Örnekler:
| Seçenek Değeri | Özet |
|---|---|
dotnet_code_quality.CA1710.additional_required_suffixes = MyClass->Class |
'MyClass' sınıfından türeyen tüm türlerin 'Class' son ekine sahip olması gerekir. |
dotnet_code_quality.CA1710.additional_required_suffixes = MyClass->Class|MyNamespace.IPath->Path |
'MyClass' öğesinden devralan tüm türlerin 'Sınıf' sonekini içermesi gerekir VE 'MyNamespace.IPath' uygulayan tüm türlerin 'Path' son ekine sahip olması gerekir. |
dotnet_code_quality.CA1710.additional_required_suffixes = T:System.Data.IDataReader->{} |
Yerleşik son ekleri geçersiz kılar. Bu durumda, 'IDataReader' uygulayan tüm türlerin artık 'Collection' ile bitmesi gerekmez. |
İlgili kurallar
CA1711: Tanımlayıcıların sonekleri yanlış olmamalıdır