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.
Tasarım kuralları, .NET Framework tasarım yönergelerine bağlı kalmayı destekler.
Bu bölümde
| Kural | Açıklama |
|---|---|
| CA1000: Genel türlerde statik üyeler bildirmeyin | Genel bir türün statik üyesi çağrıldığında, tür bağımsız değişkeni tür için belirtilmelidir. Çıkarımı desteklemeyen türe özgü bir örnek üyesi çağrıldığında, üye için tür bağımsız değişkeni belirtilmelidir. Bu iki durumda, tür bağımsız değişkenini belirtmek için söz dizimi farklıdır ve kolayca karıştırılabilir. |
| CA1001: Atılabilir alanlara sahip türler atılabilir olmalıdır | Sınıf, System.IDisposable türünde bir örnek alanı bildirir ve uygular ve sınıf IDisposable uygulamaz. Yönetilmeyen bir kaynağa dolaylı olarak sahip olan bir IDisposable alanı bildiren bir sınıf, IDisposable arabirimini uygulamalıdır. |
| CA1002: Genel listeleri açığa çıkarmayın | System.Collections.Generic.List<(Of <(T>)>), devralma için değil performans için tasarlanmış genel bir koleksiyondur. Bu nedenle, List herhangi bir sanal üye içermez. Devralma için tasarlanmış genel koleksiyonlar bunun yerine kullanıma sunulmalıdır. |
| CA1003: Genel olay işleyicisi örneklerini kullanın | Tür, imzasında iki parametre (ilk parametre bir nesne ve ikinci parametre EventArgs'e atanabilir bir tür olan) bulunan ve içeren derlemesi .NET Framework 2.0'ı hedefleyen, void döndüren bir temsilci içerir. |
| CA1005: Genel türlerde aşırı parametre kullanmaktan kaçının | Genel bir tür ne kadar çok tür parametresi içeriyorsa, her tür parametresinin temsil ettiği şeyi bilmek ve hatırlamak o kadar zordur. Liste<T>gibi bir tür parametresiyle ve bazı durumlarda Sözlük<TKey, TValue>gibi iki tür parametresiyle genellikle açıktır. Ancak, ikiden fazla tür parametresi varsa, zorluk çoğu kullanıcı için çok büyük hale gelir. |
| CA1008: Enum'lar sıfır değere sahip olmalıdır | Diğer değer türleri gibi başlatılmamış bir numaralandırmanın varsayılan değeri sıfırdır. Bayraklara dayalı olmayan bir enumerasyon, varsayılan değerin enumerasyon için geçerli bir değer olması adına sıfır değeri kullanılarak bir üye tanımlamalıdır. FlagsAttribute özniteliği uygulanmış bir numaralandırma sıfır değerli bir üye tanımlarsa, numaralandırmada hiçbir değer ayarlanmadığını belirtmek için adı "Yok" olmalıdır. |
| CA1010: Koleksiyonlar genel arabirim uygulamalıdır | Bir koleksiyonun kullanılabilirliğini genişletmek için genel koleksiyon arabirimlerinden birini uygulayın. Daha sonra koleksiyon, genel koleksiyon türlerini doldurmak için kullanılabilir. |
| CA1012: Soyut türlerin genel oluşturucuları olmamalıdır | Soyut türlerdeki oluşturucular yalnızca türetilmiş türler tarafından çağrılabilir. Ortak oluşturucular bir türün örneklerini oluşturduğundan ve bir soyut türün örneklerini oluşturamadığınız için, genel oluşturucuya sahip soyut bir tür yanlış tasarlanmıştır. |
| CA1014: Derlemeleri CLSCompliantAttribute ile işaretleme | Ortak Dil Belirtimi (CLS), programlama dillerinde kullanılacaksa derlemelerin uyması gereken adlandırma kısıtlamalarını, veri türlerini ve kuralları tanımlar. İyi tasarım, tüm derlemelerin CLSCompliantAttribute kullanarak CLS uyumluluğunu açıkça belirtmelerini sağlar. Bu öznitelik bir derlemede yoksa, derleme uyumlu değildir. |
| CA1016: Derlemeleri AssemblyVersionAttribute ile işaretleme | .NET, bir derlemeyi benzersiz olarak tanımlamak ve kesin olarak adlandırılmış derlemelerdeki türlere bağlanmak için sürüm numarasını kullanır. Sürüm numarası, sürüm ve yayımcı ilkesiyle birlikte kullanılır. Varsayılan olarak, uygulamalar yalnızca oluşturuldukları derleme sürümüyle çalışır. |
| CA1017: Derlemeleri ComVisibleAttribute ile işaretleme | ComVisibleAttribute, COM istemcilerinin yönetilen koda nasıl erişeceğini belirler. İyi tasarım, derlemelerin COM görünürlüğünü açıkça belirtmesini sağlar. ** Tüm derleme için COM görünürlüğü ayarlanabilir ve ardından tek tek türler ve tür üyeleri için geçersiz kılınabilir. Bu öznitelik yoksa, derlemenin içeriği COM istemcileri tarafından görülebilir. |
| CA1018: Öznitelikleri AttributeUsageAttribute ile işaretleme | Özel bir öznitelik tanımlarken, kaynak kodun neresinde özel özniteliğin uygulanabileceğini belirtmek için AttributeUsageAttribute kullanarak bunu işaretleyin. Bir özniteliğin anlamı ve amaçlanan kullanımı, koddaki geçerli konumlarını belirler. |
| CA1019: Öznitelik bağımsız değişkenleri için erişimcileri tanımlama | Öznitelikler, özniteliği bir hedefe uyguladığınızda belirtilmesi gereken zorunlu bağımsız değişkenleri tanımlayabilir. Bunlar, öznitelik oluşturucularına konumsal parametreler olarak sağlandığından konumsal bağımsız değişkenler olarak da bilinir. Her zorunlu bağımsız değişken için özniteliği, bağımsız değişkenin değerinin yürütme zamanında alınabilmesi için karşılık gelen bir salt okunur özellik de sağlamalıdır. Öznitelikler, adlandırılmış bağımsız değişkenler olarak da bilinen isteğe bağlı bağımsız değişkenler de tanımlayabilir. Bu bağımsız değişkenler öznitelik oluşturucularına ada göre sağlanır ve buna karşılık gelen bir okuma/yazma özelliğine sahip olmalıdır. |
| CA1021: Out parametrelerinden kaçının | Türleri başvuru yoluyla geçirme (out veya ref kullanarak), işaretçilerle ilgili deneyime, değer türleri ve başvuru türlerinin nasıl farklılaştığını anlama yeteneğine ve birden fazla dönüş değeri olan yöntemleri yönetme becerisine ihtiyaç duyar. Ayrıca, out ve ref parametreleri arasındaki fark yaygın olarak anlaşılamıyor. |
| CA1024 : Uygun olduğunda özellikleri kullanın | Ortak veya korumalı bir yöntemin adı "Get" ile başlar, parametre almaz ve dizi olmayan bir değer döndürür. Bu yöntem, bir özellik haline gelmek için iyi bir aday olabilir. |
| CA1027: Numaralandırmaları FlagsAttribute ile işaretleme | Numaralandırma, ilgili adlandırılmış sabitler kümesini tanımlayan bir değer türüdür. Adlandırılmış sabitleri anlamlı bir şekilde birleştirilebildiğinde bir sabit listesi için FlagsAttribute uygulayın. |
| CA1028: Numaralandırma depolama Int32 olmalıdır | Numaralandırma, ilgili adlandırılmış sabitler kümesini tanımlayan bir değer türüdür. Varsayılan olarak, sabit değeri depolamak için System.Int32 veri türü kullanılır. Bu temel türü değiştirebilmenize rağmen, çoğu senaryo için gerekli değildir veya önerilmez. |
| CA1030: Olayları uygun şekilde kullanın | Bu kural normalde olaylar için kullanılacak adlara sahip yöntemleri algılar. Açıkça tanımlanmış bir durum değişikliğine yanıt olarak bir yöntem çağrılırsa, yöntem bir olay işleyicisi tarafından çağrılmalıdır. yöntemini çağıran nesneler, doğrudan yöntemini çağırmak yerine olayları tetiklemelidir. |
| CA1031: Genel özel durum türlerini yakalamayın | Genel istisnalar yakalanmamalıdır. Daha özel bir özel durum yakalayın veya catch bloğundaki son deyim olarak genel özel durumu yeniden yükleyin. |
| CA1032: Standart özel durum oluşturucuları uygulayın | Oluşturucuların tam kümesinin sağlanamaması, özel durumların doğru şekilde işlenmesini zorlaştırabilir. |
| CA1033: Arabirim yöntemleri alt türler tarafından çağrılmalıdır | Mühürsüz, görünür bir tür, açık bir ortak arayüzün açık yöntem uygulamasını sağlar ama aynı isme sahip alternatif bir görünür yöntem sağlamaz. |
| CA1034: İç içe geçmiş türler görünmemelidir | Yerleşik tür, bir başka türün kapsamında bildirilen bir türdür. İç içe türler, içeren türün özel uygulama ayrıntılarını kapsüllemek için kullanışlıdır. Bu amaç için kullanılan iç içe türler dışarıdan görünür olmamalıdır. |
| CA1036: Karşılaştırılabilir türlerdeki yöntemleri geçersiz kılma | Genel veya korumalı bir tür System.IComparable arabirimini uygular. Object.Equals'ı geçersiz kılmaz veya eşitlik, eşitsizlik, küçüklük veya büyüklük için dile özgü işleci aşırı yüklemez. |
| CA1040: Boş arabirimlerden kaçının | Arabirimler, bir davranış veya kullanım sözleşmesi sağlayan üyeleri tanımlar. Arabirim tarafından açıklanan işlevsellik, türün devralma hiyerarşisinde nerede göründüğünden bağımsız olarak herhangi bir tür tarafından benimsenebilir. Bir tür, arabirimin üyeleri için uygulamalar sağlayarak bir arabirim uygular. Boş bir arabirim herhangi bir üye tanımlamaz; bu nedenle, uygulanabilecek bir sözleşme tanımlamaz. |
| CA1041: ObsoleteAttribute mesajını sağlayın | Bir tür veya üye, ObsoleteAttribute.Message özelliği belirtilmemiş olan bir System.ObsoleteAttribute özniteliği kullanılarak işaretlenir. ObsoleteAttribute kullanılarak işaretlenmiş bir tür veya üye derlendiğinde, özniteliğin message özelliği görüntülenir ve bu özellik kullanıcıya eski tür veya üye hakkında bilgi verir. |
| CA1043 : İndeksleyiciler için tamsayı veya dize bağımsız değişkeni kullanın | Dizin oluşturucular (dizine alınan özellikler) dizin için tam sayı veya dize türleri kullanmalıdır. Bu türler genellikle veri yapılarının dizinini oluşturmak için kullanılır ve kitaplığın kullanılabilirliğini artırır. Nesne türünün kullanımı, tasarım zamanında belirli integral veya dize türünün belirtilemediği durumlarla sınırlandırılmalıdır. |
| CA1044: Özellikler yalnızca yazılmamalıdır | Kabul edilebilir olsa ve genellikle salt okunur bir özelliğe sahip olmak gerekli olsa da, tasarım yönergeleri salt yazma özelliklerinin kullanılmasını yasaklar. Bunun nedeni, bir kullanıcının bir değer ayarlamasına izin vermek ve ardından kullanıcının bu değeri görüntülemesini engellemek herhangi bir güvenlik sağlamaz. Ayrıca, okuma erişimi olmadan, paylaşılan nesnelerin durumu görüntülenemez ve bu da yararlılıklarını sınırlar. |
| CA1045 : Türleri referansla geçirmeyin | Türleri başvuruya göre geçirme (out veya ref kullanarak), işaretçilerle ilgili deneyim, değer türlerinin ve başvuru türlerinin nasıl farklılık gösterdiğini anlama ve birden çok dönüş değeri olan yöntemleri işleme gerektirir. Genel bir hedef kitle için tasarım yapan kitaplık mimarları, kullanıcıların out veya ref parametreleriyle çalışma konusunda yetkin olmasını beklememelidir. |
| CA1046: Başvuru türlerinde eşitlik operatörünü aşırı yüklemeyin | Başvuru türleri için, eşitlik işlecinin varsayılan uygulaması neredeyse her zaman doğrudur. Varsayılan olarak, yalnızca aynı nesneye işaret eden iki başvuru eşittir. |
| CA1047: Mühürlü türlerde korumalı üyeleri bildirmeyin | Türler, devralan türlerin üyeye erişebilmesi veya üyeyi geçersiz kılabilmesi için korumalı üyeler bildirir. Tanım gereği, korumalı türler devralınamaz, yani korumalı türlerdeki korumalı yöntemler çağrılamaz. |
| CA1050: Ad alanlarında türleri bildirme | Ad çakışmalarını önlemek için ve bir nesne hiyerarşisindeki ilgili türleri düzenlemenin bir yolu olarak türler ad alanında bildirilir. |
| CA1051 : Görünür örnek alanlarını bildirmeyin | Bir alanın birincil kullanımı, uygulama ayrıntısı olarak olmalıdır. Alanlar özel veya dahili olmalıdır ve özellikler aracılığıyla erişime açılmalıdır. |
| CA1052: Statik tutucu türleri korumalı olmalıdır | Ortak veya korumalı tür yalnızca statik üyeler içerir ve korumalı (C#) veya NotInheritable (Visual Basic) değiştiricisi kullanılarak bildirilmez. Devralınması amaçlanmamış bir tür, temel tür olarak kullanılmasını önlemek için korumalı değiştirici kullanılarak işaretlenmelidir. |
| CA1053: Statik tutucu türlerinin oluşturucuları olmamalıdır | Genel veya iç içe yerleştirilmiş ortak tür yalnızca statik üyeleri bildirir ve genel veya korumalı bir varsayılan oluşturucuya sahiptir. Statik üyeleri çağırmak türün bir örneğini gerektirmediğinden oluşturucu gereksizdir. Dize aşırı yüklemesi, güvenlik ve emniyet için dize bağımsız değişkenini kullanarak tekdüzen kaynak tanımlayıcısı (URI) aşırı yüklemesini çağırmalıdır. |
| CA1054: URI parametreleri dize olmamalıdır | Bir yöntem bir URI'nin dize gösterimini alırsa, bu hizmetleri güvenli ve güvenli bir şekilde sağlayan URI sınıfının bir örneğini alan bir aşırı yükleme sağlanmalıdır. |
| CA1055: URI dönüş değerleri dize şeklinde olmamalıdır | Bu kural, yönteminin bir URI döndürdüğünü varsayar. URI'nin dize gösterimi ayrıştırma ve kodlama hatalarına açıktır ve güvenlik açıklarına yol açabilir. System.Uri sınıfı bu hizmetleri güvenli ve güvenli bir şekilde sağlar. |
| CA1056 : URI özellikleri dize olarak verilmemelidir | Bu kural, özelliğinin bir URI'yi temsil ettiğini varsayar. URI'nin dize gösterimi ayrıştırma ve kodlama hatalarına açıktır ve güvenlik açıklarına yol açabilir. System.Uri sınıfı bu hizmetleri güvenli ve güvenli bir şekilde sağlar. |
| CA1058: Türler belirli temel türleri genişletmemelidir | Dışarıdan görünen bir tür, belirli temel türleri genişletir. Alternatiflerden birini kullanın. |
| CA1060: P/Invokes'ı NativeMethods sınıfına taşıma | System.Runtime.InteropServices.DllImportAttribute ile işaretlenmiş olanlar veya Visual Basic'te Declare anahtar sözcüğü kullanılarak tanımlanan yöntemler gibi platform çağırma yöntemleri yönetilmeyen koda erişin. Bu yöntemler NativeMethods, SafeNativeMethods veya UnsafeNativeMethods sınıfında olmalıdır. |
| CA1061: Temel sınıf yöntemlerini gizlemeyin | Temel türdeki bir yöntem, türetilen yöntemin parametre imzası yalnızca temel yöntemin parametre imzasında karşılık gelen türlerden daha zayıf türlere göre farklılık gösterdiğinde türetilmiş bir türdeki aynı adlandırılmış yöntem tarafından gizlenir. |
| CA1062: Genel yöntemlerin bağımsız değişkenlerini doğrulama | Dışarıdan çağrılabilir yöntemlere geçirilen tüm referans argümanları null değerine karşı denetlenmelidir. |
| CA1063: IDisposable'i doğru uygulama | Tüm IDisposable türleri Dispose desenini doğru şekilde uygulamalıdır. |
| CA1064: İstisnalar genel olmalıdır | Kapsama alanı içindeki bir özel durum yalnızca kendi içsel alanı içinde görünür. Özel durum iç kapsamın dışında kalırsa, özel durumu yakalamak için yalnızca temel özel durum kullanılabilir. İç özel durum System.Exception, System.SystemExceptionveya System.ApplicationException'den devralınırsa, dış kod özel durumla ne yapacağını bilmek için yeterli bilgiye sahip olmaz. |
| CA1065: Beklenmeyen konumlarda özel durumlar oluşturmaktan kaçının | Belirli durumlarda hata oluşturması beklenmeyen bir yöntem bir hata oluşturur. |
| CA1066: Equals geçersiz kılınırken IEquatable uygula | Değer türü Equals yöntemini geçersiz kılar, ancak IEquatable<T>uygulamaz. |
| CA1067: IEquatable uygularken Eşittirleri Geçersiz Kıl | Bir tür IEquatable<T>uygular, ancak Equals yöntemini geçersiz kılmaz. |
| CA1068: CancellationToken parametreleri son gelmelidir | Yöntem, son parametre olmayan bir CancellationToken parametresine sahiptir. |
| CA1069: Sabit listeleri yinelenen değerlere sahip olmamalıdır | Bir enum, açıkça aynı sabit değere atanmış birden çok üyeye sahiptir. |
| CA1070: Olay alanlarını sanal olarak bildirmeyin | alan benzeri bir olay sanal bir etkinlik olarak bildirildi. |
GitHub'da bizimle işbirliği yapın
Bu içeriğin kaynağı GitHub'da bulunabilir; burada ayrıca sorunları ve çekme isteklerini oluşturup gözden geçirebilirsiniz. Daha fazla bilgi için katkıda bulunan kılavuzumuzu inceleyin.