Aracılığıyla paylaş


CA1710: Tanımlayıcıların sonekleri doğru olmalıdır

Özellik Değer
Kural Kimliği CA1710
Başlık Tanımlayıcılar doğru soneke sahip olmalıdır
Kategori Adlandırma
Hataya neden olan veya bozulmayan düzeltme Yeni
.NET 9'da varsayılan olarak etkin Hayır

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/Arabirim Sonek
System.Attribute Öznitelik
System.EventArgs EventArgs
System.Exception Özel durum
System.Collections.ICollection Koleksiyon
System.Collections.IDictionary Sözlük
System.Collections.IEnumerable Koleksiyon
System.Collections.Generic.IReadOnlyDictionary<TKey,TValue> Sözlük
System.Collections.Queue Koleksiyon veya Kuyruk
System.Collections.Stack Koleksiyon veya Yığın
System.Collections.Generic.ICollection<T> Koleksiyon
System.Collections.Generic.IDictionary<TKey,TValue> Sözlük
System.Data.DataSet DataSet
System.Data.DataTable Collection veya DataTable
System.IO.Stream Akış
System.Security.IPermission İzin
System.Security.Policy.IMembershipCondition Koşul
Olay işleyici temsilcisi. EventHandler

Uygulayan ICollection ve sözlük, yığın veya kuyruk gibi genelleştirilmiş bir veri yapısı türü olan türler, türün amaçlanan kullanımı hakkında anlamlı bilgiler sağlayan adlara izin verilir.

Uygulayan ICollection ve belirli öğelerden oluşan bir koleksiyon olan türlerin adları 'Koleksiyon' sözcüğüyle biter. Örneğin, bir nesne koleksiyonu Queue 'QueueCollection' adına sahip olabilir. 'Koleksiyon' soneki, (For Each Visual Basic'te) deyimi kullanılarak foreach koleksiyon üyelerinin numaralandırılabildiğini gösterir.

Türü de veya ICollectionuygulasa bile 'Sözlük' sözcüğüyle biten adlar IEnumerable uygulayan IDictionary veya IReadOnlyDictionary<TKey,TValue> olan türler. 'Koleksiyon' ve 'Sözlük' sonek adlandırma kuralları, kullanıcıların aşağıdaki iki numaralandırma desenini ayırt etmesine olanak tanır.

'Koleksiyon' son ekine sahip türler bu numaralandırma desenini izler.

foreach(SomeType x in SomeCollection) { }

'Sözlük' son ekine sahip türler bu numaralandırma desenini izler.

foreach(SomeType x in SomeDictionary.Values) { }

Nesne DataSet , ve nesnelerinin koleksiyonlarından DataTable oluşan bir nesne koleksiyonundan System.Data.DataColumn System.Data.DataRow oluşur. Bu koleksiyonlar temel System.Data.InternalDataCollectionBase sınıf aracılığıyla uygulanırICollection.

İhlalleri düzeltme

Türü, doğru terimle soneki olacak ş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 'Koleksiyon' 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 bir foreach deyimi kullanılarak numaralandırılabildiğini belirttiğinden bu kuraldan gelen 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 none olarak ayarlayın.

[*.{cs,vb}]
dotnet_diagnostic.CA1710.severity = none

Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.

Çözümlemek için kod yapılandırma

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, geçerli olduğu tüm kurallar için 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

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

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 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 belge kimliği biçiminde isteğe bağlı T: ön ek içeren tam adlar.

Örnekler:

Seçenek Değeri Özet
dotnet_code_quality.CA1710.additional_required_suffixes = MyClass->Class 'MyClass' öğesinden devralan tüm türlerin 'Sınıf' 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.

CA1711: Tanımlayıcıların sonekleri yanlış olmamalıdır

Ayrıca bkz.