Aracılığıyla paylaş


Tasarım Uyarıları

Tasarım uyarıları .NET Framework Tasarım Yönergelerine bağlılığı destekler.

Bu Bölümde

Kural

Tanımlama

CA1000: Genel türlerde statik üyeleri belirtme

Bir genel türün statik bir üyesi çağrıldığında, tür bağımsız değişkeni tür için belirtilmelidir.Çıkarım desteklemeyen bir genel örnek üyesi çağırıldığında, tür bağımsız değişkeni üye için belirtilmelidir.Bu iki durumda, tip argümanını özelleştirmek için olan sözdizimi farklıdır ve kolayca anlaşılır.

CA1001: Atılabilir alanlara sahip olan türler atılabilir olmalıdır

Bir sınıf System.IDisposable tipi örnek alanını derler ve uygular ve sınıf IDisposable'ı uygulamaz.IDisposable alanını derleyen sınıf, yönetilmeyen kaynağı dolaylı yoldan sahiplenir ve IDisposable arayüzünü uygulamalıdır.

CA1002: Genel listeleri gösterme

System.Collections.Generic.List<(Of <(T>)>) devralma için değil, performans için tasarlanmış bir genel gruptur.Bu nedenle, liste herhangi bir sanal üyeyi içermiyor.Bunun yerine devralma için tasarlanmış genel koleksiyonlar maruz kalır.

CA1003: Genel olay işleyici örnekleri kullan

Bir tür, imzası iki parametre (birincisi bir nesne ve ikincisi EventArgs'a imza atabilen bir tür) içeren boşluk döndüren bir temsilci içerir ve içeren derlemeler .NET Framework 2,0 'i hedefler.

CA1004: Genel yöntemler tür parametresi sağlamalıdır

Tip argümanının açıkca özelleştirilmesi yerine yöntemi geçen argüman tipiyle tanımlanan genel yöntemin nasıl tip argümanı olduğunun sonucudur.Bir genel yöntem parametre imzası kesmesini etkinleştirmek için yöntem türü parametresi ile aynı türde bir parametre eklemeniz gerekir.Bu durumda, tip argümanının özelleştirlmesine gerek yoktur.Sonuç çıkarma tüm tip parametreleri için kullandığınızda, genel ve genel olmayan örnek yöntemleri özdeş çağrılır; bu genel yöntemlerin kullanımını kolaylaştırır.

CA1005: Genel türlerde aşırı parametrelerden kaçının

Daha çok tip parametresi, genel tip içerir, bilmek daha zordur ve hangi tip parametrelerinin temsil ettiğini anımsamak zordur.Bu genellikle tek tip parametre ile açıktır, <T> gibi, ve daha kesin durumlarda iki tip parametreye sahiptir, sözlükteki <TKey, TValue> gibi.Ancak, eğer iki parametreden fazla parametre varsa, birçok kullanıcı için zorluk derecesi artar.

CA1006: Üye imzalarında genel türleri iç içe kullanmayın

Bir yuvalanmış argüman aynı zamanda genel tip olan bir tip argümanıdır.yuvalanmış tip argümanı içeren imzası olan bir üye çağırmak için, kullanıcı bir genel tipi örneklemeli ve bu tipi ikinci bir genel tipin yapıcısına geçirmelidir.Gerekli sözdizimi karmaşıktır ve kaçınılmalıdır.

CA1007: Uygun yerlerde genel türler kullanın

System.Object türünde bir başvuru parametresi dışarıdan görünen bir yöntem içerir.Bir generic yöntem kullanımı olmadan ilk başvuru parametresi türü türüne çevrim, yönteme aktarılması kısıtlamaları, bağlı tüm türleri sağlar.

CA1008: Numaralandırmalar sıfır değerine sahip olmalıdır

Tıpkı diğer türler gibi, başlatılmamış bir numaralandırmanın varsayılan değeri sıfırdır.İşaretlenmemiş bir geçerli numaralandırma, varsayılan değerin geçerli bir numaralandırma değeri olması için değeri sıfır olan bir üye tanımlaması gerekir.Eğer numaralandırma FlagsAttribute niteliği sıfır değerli üyeyi tanımlarsa, onun adı numaralndırmada hiçbir değerin ayarlanmadığı "Hiçbiri" olmalıdır.

CA1009: Olay işleyicilerini doğru bildirin

Olay işleyicisi yöntemi iki parametre alır.İlk System.Object türündedir ve "gönderen" olarak adlandırılır.Bu olayda oluşan nesnedir.İkinci parametre System.EventArgs türüdür ve "e" olarak adlandırılır.Bu olay ile ilişkilendirilmiş olan verilerdir.Olay işleyici yöntemlerine bir değer döndürmemelidir; C# programlama diliyle, dönüş türü boşluk tarafından belirtilir.

CA1010: Koleksiyonlar genel arabirim uygulamalıdır

Bir koleksiyon kullanılabilirliğini genişletmek için genel koleksiyonu arabirimleri birini uygulamak.Daha sonra tahsilat genel koleksiyon türlerini doldurmak için kullanılabilir.

CA1011: Temel türleri parametre olarak geçirmeyi düşünün

Temel tür yöntem bildiriminde parametre olarak belirtildiğinde temel türünden türetilen herhangi bir tür yöntemine karşılık gelen bağımsız değişken olarak geçirilebilir.Türetilmiş parametre türü tarafından sağlanan ek işlevler gerekmiyorsa, temel tür kullanımı yöntemi daha geniş kullanımını etkinleştirir.

CA1012: Soyut türlerde oluşturucular bulunmamalıdır

Soyut türler üzerindeki kurucular yalnızca türetilen türler tarafından çağrılabilir.Ortak yapıcılar tipin bir örneğini yaptığından, ve siz bir soyut tipin örneğini yapamayacağınızdan, soyut sınıf hatalı biçimde dizayn edilmiş ortak yapıcıya sahip olur.

CA1013: Eşittir işlecini ekleme ve çıkarmayı aşırı yükleyerek aşırı yükleyin

Bir genel ya da korumalı tür eşitlik imlecini uygulamadan ekleme ya da çıkarma işleçlerini uygular.

CA1014: Derlemeleri CLSCompliantAttribute ile işaretleme

Ortak Dil Tanımlaması(CLS) isim kısıtlamalarını, veri tiplerini, ve karşıt programlama dilleri kullanılırsa derlemelerin uyması zorunlu olan kuralları tanımlar.İyi dizayn bütün derlemelerin CLSCompliantAttribute kullanarak CLS ile uyumunun belirlemesidir.Bu öznitelik bir derlemede yoksa, montaj uyumlu değildir.

CA1016: Derlemeleri AssemblyVersionAttribute ile işaretleme

.NET Framework derlemeyi benzersiz tanımlamada versiyon numarasının tiplerini güçlü derlemelere bağlamak için kullanır.Sürüm numarası, sürüm ve yayımcı ilkesi ile birlikte kullanılır.Varsayılan olarak, uygulamalar yalnızca oluşturulmuş derleme sürümlerini çalıştırır.

CA1017: Derlemeleri ComVisibleAttribute ile işaretleme

ComVisibleAttribute COM müşterilerinin yönetilen koda nasıl erişeceğini tanımlar.İyi tasarım derlemelerin açıkca COM görünürlüğünde gösterildiğini dikte eder.COM görünürlüğü tüm derleme için ayarlanabilir ve sonra bireysel tip ve tip üyeleri için geçersiz kılınabilir.Eğer bu öznitelik yoksa, derleme içeriği COM istemcileri tarafından görülebilir.

CA1018: Öznitelikleri AttributeUsageAttribute ile işaretleyin

Özel öznitelik tanımladığınızda, AttributeUsageAttribute kullanarak özel öznitelik kaynak kodunun nerede uygulanabilir olduğunu göstermek için işaretleyin.Bir özniteliğin anlamı ve amaçlanan kullanımı, kodun içinde onun varolan konumunu tanımlar.

CA1019: Öznitelik bağımsız değişkenleri için erişimcileri tanımlayın

Öznitelikler özniteliği işaretlediğinizde özelleştirilen zorunlu argümanları tanımlayabilir.Ayrıca bunlar duruma bağlı argümanlar olarak da bilinirler, çünkü öznitelik yapıcısına verilen özelllikler duruma bağlıdır.Zorunlu her bağımsız değişken yürütme zaman bağımsız değişkenin değeri alınması gerektiğini özniteliği karşılık gelen salt okunur özellik de sağlamalıdır.Öznitelikler isimlendirilmiş argümanlar olarak bilinen duruma bağlı argümanlar olarak da tanımlanabilirler.Bu bağımsız öznitelik oluşturucular ad tarafından sağlanır ve karşılık gelen bir okuma/yazma özelliğine sahip olmalıdır.

CA1020: Birkaç türü olan ad alanlarından kaçının

Her bir ad alanının kendi mantıksal düzenlemesi vardır ve seyrek doldurulmuş bir ad alanına türleri koymak için geçerli bir nedeniniz olduğundan emin olun.

CA1021: Out parametrelerinden kaçının

Referansa ( out veya ref kullanarak ) göre türleri geçirmek işaretçi deneyimi gerektirir, değer tipi ve referans tipi arasındaki farkı ve işleme yöntemi ile birden çok değer döndürmeyi anlamak gerekir.Ayrıca, out ve ref parametreleri arasındaki fark açıkca anlaşılmadı.

CA1023: Dizin oluşturucular çok boyutlu olmamalıdır

Dizinleyiciler (dizinlenmiş özellikleri), tek bir dizin kullanmalı.Çok boyutlu dizinleyiciler kitaplığın kullanılabilirliğini önemli ölçüde azaltabilir.

CA1024: Uygun yerlerde özellikler kullan

Ortak veya korumalı yöntem "Get" ile başlar, herhangi bir parametre almaz ve bir dizi olmayan bir değer döndüren bir adı vardır.Yöntem, bir özellik olmak için çok iyi bir aday olabilir.

CA1025: Tekrarlanan bağımsız değişkenleri params dizisi ile değiştirin

Parametre dizisini argümanın gerçel sayısı bilinmediğinde ve argüman değişkenler aynı tipte olduğunda ya da aynı tip olarak geçirilebileceğinde argümanları tekrarlamak için kullanın.

CA1026: Varsayılan parametreler kullanılmamalıdır

Varsayılan parametreleri kullanma yöntemleri CLS altında izin verilir; Ancak, CLS derleyicileri bu parametreler için atanmış değerleri göz ardı etmeye olanak sağlar.Programlama dilleri arasında istediğiniz davranışı korumak için varsayılan parametreleri kullanma yöntemleri varsayılan parametrelerini sağlayan yöntemi aşırı değiştirilmelidir.

CA1027: Numaralandırmaları FlagsAttribute ile işaretle

Bir numaralandırma ilişkili adlandırılmış sabitler kümesini tanımlayan değer türüdür.Anlamsız olarak birleştirildiğinde numaralandırmaya FlagsAttribute'ü uygulayın.

CA1028: Numaralandırma depolaması Int32 olmalıdır

Bir numaralandırma ilişkili adlandırılmış sabitler kümesini tanımlayan değer türüdür.Varsayılan olarak, System.Int32 veri türü sabit değerleri depolamak için kullanılır.Bu temel türünü değiştirseniz bile bu önerilen bir senaryo değildir.

CA1030: Uygun yerlerde olaylar kullanın

Bu kural, normalde olaylar için kullanılan adlara sahip yöntemleri algılar.Yanıt olarak açıkça tanımlanmış bir durum değişikliği yöntemi çağrılırsa, olay işleyicisi tarafından yönteminin çağrılması gerekir.Yöntemi direkt olarak çağırmak yerine olayları yükselterek çağıran nesneler.

CA1031: Genel özel durum türlerini yakalamayın

Genel özel durum yakalanmamalı.Catch bloğundaki son cümle gibi daha spesifik istisna yakalamak veya genel istisnayı tekrar fırlatmak.

CA1032: Standart özel durum oluşturucuları uygulayın

Yapıcıların tüm ayarlamasını sağlamaktaki başarısızlık, istisnalarla başa çıkmayı zorlaştırabilir.

CA1033: Arabirim yöntemleri alt türler tarafından çağırılabilir olmalıdır

Ağzı açık dışarıdan görünen bir tür açık yöntem uygulaması ortak bir arabirim sağlar ve aynı ada sahip bir alternatif dışarıdan görünen yöntem sağlamaz.

CA1034: İç içe türler görünebilir olmamalıdır

İç içe türü başka bir kapsamda bildirilen bir türüdür.İç içe geçmiş türler, özel uygulama ayrıntılarını kapsayan türdeki kapsülleme için kullanışlıdır.Bu amaçla kullanılan, iç içe türün dışarıdan görünür olmaması gerekir.

CA1035: ICollection uygulamalarında türü kesin olarak belirtilmiş üyeler olmalıdır

Bu kural IColleciton uygulamalarına türü kesin belirlenmiş üyeler sağlamak için gereklidir, böylece kullanıcıların arabirim tarafından sağlanan işlevselliği kullandığı zaman, bağımsız değişkenleri Nesne türüne atamaları gerekli değildir.Bu kural, türün ICollection uyguladığını varsayar.Amaç ise nesneden daha güçlü tür örnekleri topluluğunu yönetmektir.

CA1036: Karşılaştırılabilir türlerde geçersiz kılma yöntemleri

Ortak veya korumalı tür System.IComparable arabirimini uygular.Object.Equals ne etkisiz kılınabilir ne de eşitlik için olan özel-dil operatörüyle aşırı yüklenebilir, eşitsizlik durumu olabilir, daha küçülebilir ya da büyüyebilir.

CA1038: Numaralandırıcıların türü kesin olarak belirtilmelidir

Bu kural, kullanıcı arabirimi tarafından sağlanan işlevselliği kullandığınızda güçlü türü için dönen değer atama yapmak için gerekli değildir, ayrıca süregelen özelliğinin türü kesin belirlenmiş bir sürümünü sağlamak için IEnumerator uygulamaları gereklirir.

CA1039: Listelerin türü kesin olarak belirlenmiştir

Bu kurala IColleciton uygulamalarına türü kesin belirlenmiş üyeler sağlamak için IList gereklidir, böylece kullanıcıların arabirim tarafından sağlanan işlevselliği kullandığı zaman, bağımsız değişkenleri System.Object türüne atamaları gerekli değildir.

CA1040: Boş arabirimlerden kaçının

Arayüzler bir davranış veya kullanım sözleşmesi sağlayan üyeleri tanımlar.Arabirim tarafından tanımlanan fonksiyonellik herhangi bir tür tarafından türün kalıtım hiyerarşisinde nerede belirdiği önemsenmeksizin devralınabilir.Bir tür, arabirimin üyeleri ve arayüzleri için uygulama sağlar.Boş bir arabirim herhangi bir üye tanımlamıyor; bu nedenle, uygulanabilir bir sözleşme tanımlamaz.

CA1041: ObsoleteAttribute iletisi sağlayın

Türü veya üye belirtilen kendi ObsoleteAttribute.Message özelliğine sahip olmayan bir System.ObsoleteAttribute özniteliği kullanılarak işaretlendi.Türü veya ObsoleteAttribute kullanılarak işaretlenmiş üye derlendiğinde, eski türü veya üye kullanıcı bilgilerini verir özniteliği ileti özelliği görüntülenir.

CA1043: Dizin oluşturucular için tamsayı veya dize bağımsız değişkeni kullanın

Dizinleyiciler (dizinlenmiş özellikleri) integral veya dize türleri için dizin kullanlıdır.Bu türler, genellikle veri yapılarını dizinleme için kullanılır ve bunlar kitaplığın kullanılabilirliğini artırırlar.Nesne türünün kullanılması için belirli integrali veya dize türü tasarım zamanında burada tarif edilemez, bu gibi durumlarda sınırlı tutulmalıdır.

CA1044: Özellikler salt yazılır olmamalıdır

Salt okunur özelliğe sahip olmasına karşın kabul edilebilir ve genellikle gereklidir, tasarıma ilişkin yönergeler salt yazılır özellik kullanılmasını engeller.Bir kullanıcıyı bir değere ayarlamaktan ve sonra kullanıcı bu değeri görüntülemeye önleme almadığından herhangi bir güvenlik yoktur.Ayrıca, okuma erişimi paylaşılan nesnelerin durumunu, hangi faydaları sınırlar görüntülenemez.

CA1045: Türleri başvuruya göre geçirmeyin

Referansa ( out veya ref kullanarak ) göre türleri geçirmek işaretçi deneyimi gerektirir, değer tipi ve referans tipi arasındaki farkı ve işleme yöntemi ile birden çok değer döndürmeyi anlamak gerekir.Genel kitle için dizayn eden kütüphane mimarları, kullanıcılardan out ya da ref parametrelerini maksimum düzeyde kullanmalarını beklememelidirler.

CA1046: Başvuru türlerinde eşittir işleçlerini aşırı yüklemeyin

Başvuru tipleri için, varsayılan eşitlik işleci neredeyse her zaman doğrudur.Varsayılan olarak, yalnızca aynı nesneye gelirseniz iki başvuru eşit olur.

CA1047: Korumalı türlerde korunan üyeleri bildirmeyin

Tipler, devralmasına erişebileceğiniz veya üyeyi geçersiz kılmak için korunan üyelerin türlerini bildirir.Tanım gereği, mühürlenmiş türler kalıtılamaz, yani mühürlenmiş türler üzerindeki korunan yöntemler çağrılamaz.

CA1048: Korumalı türlerde sanal üyeleri bildirme

Türler yöntemi sanal olarak bildirir, böylece devralan türler sanal yöntemin uygulanmasını geçersiz kılabilir.Tanım gereği, mühürlenmiş bir tür devralınamaz.Bu sanal bir yöntem mühürlenmiş bir türde anlamsız hale getirir.

CA1049: Yerel kaynaklara sahip olan türler atılabilir olmalıdır

Yönetilmeyen kaynakların tahsis türlerini arayanların isteğine bağlı kaynakları serbest bırakmak ve kaynakları tutan nesnelerin yaşam sürelerini kısaltmak için etkinleştirmek üzere IDisposable gerçekleştirmelisiniz.

CA1050: Ad alanlarında türleri bildirin

Türlerin ad çakışmalarını önlemek için ad alanlarını ve ilgili türü bir nesne sıradüzeni içinde düzenlemeniz için bir yöntem olarak bildirilir.

CA1051: Görünür örnek alanlarını bildirme

Bir alanın birincil kullanım alanının uygulama ayrıntısı olması gerekir.Alanların özel veya iç olması gerekir ve özelliklerini kullanmaya maruz kalması gerekir.

CA1052: Statik tutucu türleri mühürlenmelidir

Ortak veya korumalı tür yalnızca statik üyeleri içerir ve mühürlenmiş (C#) veya NotInheritable (Visual Basic) değiştirici kullanarak bildirilmez.Kalıtılamayacak anlamına gelen tip mühürleme değiştirici kullanılarak basit tip gibi kullanılmak için işaretlenmeli.

CA1053: Statik tutucu türlerinde oluşturucular bulunmamalıdır

Ortak veya iç içe geçmiş ortak bir tür yalnızca statik üyeleri bildirir ve ortak veya korumalı varsayılan bir constructor/kurucusu vardır.Statik üyeleri çağırma bir tür örneği gerektirmediğinden kurucu gereksizdir.Dize aşırı yüklemesi, emniyet ve güvenlik için dize bağımsız değişkeni kullanılarak Tekdüzen Kaynak Tanımlayıcısı (URI) çağırmalıdır.

CA1054: URI parametreleri dizeler olmamalıdır

Bir yöntem bir URI'yı dize halinde temsile devam ederse, bu hizmetleri sağlayan güvenli bir şekilde URI sınıfının bir örneğini alır, karşılık gelen aşırı olmalıdır.

CA1055: URI dönüş değerleri dizeler olmamalıdır

Bu kural, yöntemin URI döndürdüğünü varsayar.Bir URI'nin dize halinde temsili, ayrıştırma ve hataları kodlama eğilimindedir ve güvenlik açıklarına yol açabilir.System.Uri sınıfı bu hizmetleri güvenli bir şekilde sağlar.

CA1056: URI özellikleri dizeler olmamalıdır

Bu kural özelliğin URI'yi temsil ettiğini varsayar.Bir URI'nin dize halinde temsili, ayrıştırma ve hataları kodlama eğilimindedir ve güvenlik açıklarına yol açabilir.System.Uri sınıfı bu hizmetleri güvenli bir şekilde sağlar.

CA1057: Dize URI aşırı yüklemeleri System.Uri aşırı yüklemelerini çağırır

Bir tür sadece System.Uri parametresi ile dize parametresinin değiştirilmesiyle yöntem aşırı yüklemesini bildirir.Aşırı yüklemeler URI parametresiyle aşırı yüklenmiş olan dize parametresini alır.

CA1058: Türler belli temel türleri genişletmemelidir

Dışarıdan görünen bir tür temel belirli türleri genişletir.Diğer seçenekleri kullanın.

CA1059: Üyeler belli somut türleri göstermemelidir

Somut bir tür tam bir uygulamaya sahiptir ve bu nedenle oluşturulabilecek bir türdür.Üye yaygın kullanımını etkinleştirmek için önerilen arabirimini kullanarak somut türünü değiştirin.

CA1060: P/Invokes öğesini NativeMethods sınıfına taşıyın

Platform çağırma metodları, DllImportAttribute veya Visual Basic içindeki Declare anahtar sözcüğü tarafından kullanımı tanımlanan metodlar ile yönetilmeyen koda erişebilirsiniz.Bu yöntemler, NativeMethods, SafeNativeMethods veya UnsafeNativeMethods sınıfının üyesi olmalıdır.

CA1061: Taban sınıf yöntemlerini gizlemeyin

Basit türdeki bir yöntem türetilmiş türdeki adlandırılmış yöntem tarafından gizlenmiştir, türetilmiş yöntemin parametre imzası yalnızca türetilmiş türleri ve karşılık gelen temel yöntemin parametre imzası daha korunmayan türlerine göre farklı olduğunda temel türde bir yöntemin türetilmiş bir türle aynı adlı bir yöntem olarak gizlidir.

CA1062: Genel yöntemlerin bağımsız değişkenlerini doğrulayın

Dışarıdan görünen yöntemlere iletilen tüm başvuru bağımsız değişkeni null karşı denetlenmesi.

CA1063: IDisposable'ı doğru uygulayın

Tüm IDisposable türleri Dispose kalıbını doğru gerçekleştirmelidir.

CA1064: Özel durumlar genel olmamalıdır

Bir iç özel durum yalnızca kendi iç kapsamı içinde görülebilir.İç kapsam dışında kalan özel durumlardan sonra, sadece basit istisnalar istisna yakalamak için kullanılabilir.Eğer iç istisna Exception, SystemException veya ApplicationException üzerinden türetilmişse, harici kod istisna ile ne yapacağı konusunda yeterli bilgiye sahip değildir.

CA1065: Beklenmedik konumlarda özel durumlar harekete geçirmeyin

İstisna atılmasını beklemeyen yöntem bir istisna atar.

CA2210: Derlemelerin tanımlayıcı adı geçerli olmalıdır

Bilmeyerek oynanmış derlemeye yüklenen güçlü isim projelerinin kullanıcıları.Kesin adı olmayan derlemeler oldukça sınırlı sayıda senaryo dışında kullanılmamalıdır.Paylaşmak veya düzgün imzalanmamış derlemeler dağıtmak, derleme aslının bozulup, ortak dil çalışma zamanı derlemeyi yüklenmeyebilir veya kullanıcı kendi bilgisayarındaki doğrulamayı devre dışı bırakabilir.