Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Aturan desain mendukung kepatuhan terhadap pedoman desain .NET Framework .
Di bagian ini
| Peraturan | Deskripsi |
|---|---|
| CA1000: Jangan nyatakan anggota statis pada jenis generik | Ketika anggota statis dari jenis generik dipanggil, argumen jenis harus ditentukan untuk jenis tersebut. Ketika anggota instans generik yang tidak mendukung inferensi dipanggil, argumen jenis harus ditentukan untuk anggota. Dalam kedua kasus ini, sintaks untuk menentukan argumen jenis berbeda dan mudah bingung. |
| CA1001: Tipe yang memiliki elemen sekali pakai harus dapat dibuang | Kelas mendeklarasikan dan mengimplementasikan bidang instans yang merupakan jenis System.IDisposable dan kelas tidak mengimplementasikan IDisposable. Kelas yang mendeklarasikan bidang IDisposable secara tidak langsung memiliki sumber daya yang tidak dikelola dan harus mengimplementasikan antarmuka IDisposable. |
| CA1002: Jangan mengekspos daftar generik | System.Collections.Generic.List<(Of <(T>)>) adalah koleksi generik yang dirancang untuk performa, bukan pewarisan. Oleh karena itu, Daftar tidak berisi anggota virtual apa pun. Koleksi generik yang dirancang untuk warisan harus diekspos sebagai gantinya. |
| CA1003: Gunakan instans penanganan aktivitas generik | Tipe mengandung delegasi yang mengembalikan void, yang tanda tangannya terdiri dari dua parameter (yang pertama adalah objek dan yang kedua adalah tipe yang dapat ditetapkan ke EventArgs), dan rakitan tempatnya menargetkan .NET Framework 2.0. |
| CA1005: Hindari parameter yang berlebihan pada jenis generik | Semakin banyak jenis parameter yang dikandung jenis generik, semakin sulit untuk mengetahui dan mengingat apa yang diwakili oleh setiap parameter jenis. Biasanya, ini jelas dengan satu parameter tipe, seperti pada List<T>, dan dalam kasus tertentu dengan dua parameter tipe, seperti pada Dictionary<TKey, TValue>. Namun, jika ada lebih dari dua parameter jenis, kesulitannya menjadi terlalu besar bagi sebagian besar pengguna. |
| CA1008: Enum harus memiliki nilai nol | Nilai default enumerasi yang tidak diinisialisasi, sama seperti jenis nilai lainnya, adalah nol. Enumerasi yang diatribusikan nonflags harus menentukan anggota dengan menggunakan nilai nol sehingga nilai default adalah nilai enumerasi yang valid. Jika enumerasi yang memiliki atribut FlagsAttribute yang diterapkan menentukan anggota bernilai nol, namanya harus "Tidak Ada" untuk menunjukkan bahwa tidak ada nilai yang ditetapkan dalam enumerasi. |
| CA1010: Koleksi harus menerapkan antarmuka generik | Untuk memperluas kegunaan koleksi, terapkan salah satu antarmuka koleksi generik. Kemudian, koleksi tersebut dapat digunakan untuk mengisi jenis koleksi umum. |
| CA1012: Jenis abstrak tidak boleh memiliki konstruktor publik | Konstruktor pada jenis abstrak hanya dapat dipanggil oleh jenis turunan. Karena konstruktor publik membuat instans jenis, dan Anda tidak dapat membuat instans jenis abstrak, jenis abstrak yang memiliki konstruktor publik salah dirancang. |
| CA1014: Tandai rakitan dengan CLSCompliantAttribute | Spesifikasi Bahasa Umum (CLS) mendefinisikan pembatasan penamaan, jenis data, dan aturan yang harus dipatuhi rakitan jika akan digunakan lintas bahasa pemrograman. Desain yang baik menentukan bahwa semua rakitan secara eksplisit menunjukkan kepatuhan CLS dengan menggunakan CLSCompliantAttribute. Jika atribut ini tidak ada pada rakitan, perakitan tidak sesuai. |
| CA1016: Menandai rakitan dengan AssemblyVersionAttribute | .NET menggunakan nomor versi untuk mengidentifikasi rakitan secara unik, dan untuk mengikat ke tipe dalam rakitan dengan nama kuat. Nomor versi digunakan bersama dengan kebijakan versi dan penerbit. Secara default, aplikasi hanya berjalan dengan versi rakitan yang dibuat. |
| CA1017: Menandai rakitan dengan ComVisibleAttribute | ComVisibleAttribute menentukan bagaimana klien COM mengakses kode terkelola. Desain yang baik menentukan bahwa rakitan secara eksplisit menunjukkan visibilitas COM. Visibilitas COM dapat diatur untuk seluruh rakitan lalu ditimpa untuk masing-masing tipe dan anggota tipe. Jika atribut ini tidak ada, konten assembly terlihat oleh klien COM. |
| CA1018: Menandai atribut dengan AttributeUsageAttribute | Saat Anda menentukan atribut kustom, tandai dengan menggunakan AttributeUsageAttribute untuk menunjukkan di mana dalam kode sumber atribut kustom dapat diterapkan. Arti dan penggunaan atribut yang dimaksudkan akan menentukan lokasi yang valid dalam kode. |
| CA1019: Menentukan aksesor untuk argumen atribut | Atribut dapat menentukan argumen wajib yang harus ditentukan saat Anda menerapkan atribut ke target. Ini juga dikenal sebagai argumen posisional karena disediakan ke konstruktor atribut sebagai parameter posisional. Untuk setiap argumen wajib, atribut juga harus menyediakan properti baca-saja yang sesuai sehingga nilai argumen dapat diambil pada waktu eksekusi. Atribut juga dapat menentukan argumen opsional, yang juga dikenal sebagai argumen bernama. Argumen ini disediakan ke konstruktor atribut berdasarkan nama dan harus memiliki properti baca/tulis yang sesuai. |
| CA1021: Hindari parameter keluaran | Meneruskan tipe berdasarkan referensi (menggunakan out atau ref) memerlukan pengalaman dengan pointer, memahami perbedaan antara tipe nilai dan tipe referensi, serta mengelola metode yang memiliki beberapa nilai pengembalian. Selain itu, perbedaan antara parameter out dan ref tidak dipahami secara luas. |
| CA1024: Gunakan properti yang sesuai | Metode publik atau terlindungi memiliki nama yang dimulai dengan "Get", tidak mengambil parameter, dan mengembalikan nilai yang bukan array. Metode ini mungkin merupakan kandidat yang baik untuk menjadi properti. |
| CA1027: Tandai enum dengan FlagsAttribute | Enumerasi adalah jenis nilai yang menentukan sekumpulan konstanta bernama terkait. Terapkan FlagsAttribute ke enumerasi ketika konstanta bernamanya dapat digabungkan secara bermakna. |
| CA1028: Penyimpanan enum harus Int32 | Enumerasi adalah jenis nilai yang menentukan sekumpulan konstanta bernama terkait. Secara default, jenis data System.Int32 digunakan untuk menyimpan nilai konstanta. Meskipun Anda dapat mengubah jenis yang mendasarinya, itu tidak diperlukan atau direkomendasikan untuk sebagian besar skenario. |
| CA1030: Gunakan peristiwa di tempat yang sesuai | Aturan ini mendeteksi metode yang memiliki nama yang biasanya akan digunakan untuk event. Jika metode dipanggil sebagai respons terhadap perubahan status yang ditentukan dengan jelas, metode harus dipanggil oleh penanganan aktivitas. Objek yang memanggil metode harus memicu peristiwa alih-alih memanggil metode secara langsung. |
| CA1031: Jangan menangkap jenis pengecualian umum | Pengecualian umum sebaiknya tidak diatasi. Tangkap pengecualian yang lebih spesifik, atau lemparkan kembali pengecualian umum di pernyataan terakhir dalam blok tangkapan. |
| CA1032: Menerapkan konstruktor pengecualian standar | Kegagalan menyediakan rangkaian lengkap konstruktor dapat menyulitkan penanganan pengecualian secara benar. |
| CA1033: Metode antarmuka harus dapat dipanggil oleh jenis turunan | Jenis yang tidak terlihat secara eksternal menyediakan implementasi metode eksplisit dari antarmuka publik dan tidak menyediakan metode alternatif yang terlihat secara eksternal yang memiliki nama yang sama. |
| CA1034: Jenis berlapis tidak boleh terlihat | Jenis berlapis adalah jenis yang dideklarasikan dalam cakupan jenis lain. Tipe tertulis terstruktur berguna untuk merangkum detail implementasi privat dari tipe induk. Digunakan untuk tujuan ini, tipe bersarang seharusnya tidak terlihat dari luar. |
| CA1036: Mengambil alih metode pada jenis yang sebanding | Jenis publik atau terlindungi mengimplementasikan antarmuka System.IComparable. Ini tidak menggantikan Object.Equals, maupun melebihi operator khusus bahasa untuk kesetaraan, ketidaksetaraan, kurang dari, atau lebih besar dari. |
| CA1040: Hindari antarmuka kosong | Antarmuka menentukan anggota yang menyediakan perilaku atau kontrak penggunaan. Fungsionalitas yang dijelaskan oleh antarmuka dapat diadopsi oleh jenis apa pun, terlepas dari di mana jenis muncul dalam hierarki pewarisan. Jenis mengimplementasikan antarmuka dengan menyediakan implementasi untuk anggota antarmuka. Antarmuka kosong tidak menentukan anggota apa pun; oleh karena itu, tidak mendefinisikan kontrak yang dapat diimplementasikan. |
| CA1041: Berikan pesan ObsoleteAttribute | Jenis atau anggota ditandai dengan menggunakan atribut System.ObsoleteAttribute yang tidak memiliki properti ObsoleteAttribute.Message yang ditentukan. Saat jenis atau anggota yang ditandai dengan menggunakan ObsoleteAttribute dikompilasi, properti Pesan atribut ditampilkan, yang memberikan informasi pengguna tentang jenis atau anggota yang kedaluwarsa. |
| CA1043: Gunakan argumen integral atau string untuk pengindeks | Pengindeks (yaitu, properti terindeks) harus menggunakan jenis integral atau string untuk indeks. Jenis ini biasanya digunakan untuk mengindeks struktur data dan meningkatkan kegunaan pustaka. Penggunaan jenis Objek harus dibatasi untuk kasus-kasus di mana jenis integral atau string tertentu tidak dapat ditentukan pada waktu desain. |
| CA1044: Properti tidak boleh hanya bisa ditulis | Meskipun dapat diterima dan sering kali perlu memiliki properti yang hanya bisa dibaca, pedoman desain melarang penggunaan properti yang hanya bisa ditulis. Ini karena membiarkan pengguna menetapkan nilai, dan kemudian mencegah pengguna melihat nilai tersebut, tidak memberikan keamanan apa pun. Selain itu, tanpa akses baca, status objek bersama tidak dapat dilihat, yang membatasi kegunaannya. |
| CA1045: Jangan meneruskan tipe data melalui referensi | Meneruskan jenis berdasarkan referensi (menggunakan out atau ref) memerlukan pengalaman dengan pointer, memahami perbedaan jenis nilai dan jenis referensi, dan menangani metode dengan beberapa nilai pengembalian. Arsitek perpustakaan yang merancang untuk audiens umum seharusnya tidak mengharapkan pengguna menjadi mahir dalam bekerja dengan parameter out atau ref. |
| CA1046: Jangan kelebihan beban operator sama dengan jenis referensi | Untuk jenis referensi, implementasi default operator kesetaraan hampir selalu benar. Secara default, dua referensi sama hanya jika menunjuk ke objek yang sama. |
| CA1047: Jangan nyatakan anggota yang dilindungi dalam jenis yang disegel | Tipe mendeklarasikan anggota yang dilindungi sehingga tipe turunan dapat mengakses atau menimpa anggota tersebut. Menurut definisi, jenis yang disegel tidak dapat diwariskan, yang berarti bahwa metode yang dilindungi pada jenis yang disegel tidak dapat dipanggil. |
| CA1050: Mendeklarasikan jenis di namespace | Jenis dideklarasikan dalam namespace untuk mencegah tabrakan nama dan sebagai cara untuk mengatur jenis terkait dalam hierarki objek. |
| CA1051: Jangan nyatakan bidang instans yang terlihat | Penggunaan utama dari suatu bidang seharusnya sebagai detail implementasi. Bidang harus bersifat privat atau internal dan harus diekspos dengan menggunakan properti. |
| CA1052: Tipe penampung statis harus tertutup | Jenis publik atau terproteksi hanya berisi anggota statis dan tidak dinyatakan menggunakan pengubah sealed (C#) atau NotInheritable (Visual Basic). Jenis yang tidak dimaksudkan untuk diwariskan harus ditandai dengan menggunakan pengubah tertutup untuk mencegah penggunaannya sebagai jenis dasar. |
| CA1053: Jenis pemegang statis tidak boleh memiliki konstruktor | Tipe publik atau bertumpuk publik hanya mendeklarasikan anggota statis dan memiliki konstruktor default yang publik atau terlindung. Konstruktor tidak diperlukan karena memanggil member statis tidak memerlukan instans dari tipe tersebut. Kelebihan string harus memanggil kelebihan beban pengidentifikasi sumber daya seragam (URI) dengan menggunakan argumen string untuk keselamatan dan keamanan. |
| CA1054: Parameter URI tidak boleh berupa string | Jika sebuah metode menerima representasi string dari URI, maka overload yang sesuai harus disediakan yang menerima instance dari kelas URI, dan menyediakan layanan ini dengan cara yang aman. |
| CA1055: Nilai pengembalian URI tidak boleh berupa string | Aturan ini mengasumsikan bahwa metode mengembalikan URI. Representasi string dari URI rentan terhadap kesalahan penguraian dan pengodean, dan dapat menyebabkan kerentanan keamanan. Kelas System.Uri menyediakan layanan ini dengan cara yang aman dan aman. |
| CA1056: Properti URI tidak boleh berupa string | Aturan ini mengasumsikan bahwa properti mewakili URI. Representasi string dari URI rentan terhadap kesalahan penguraian dan pengodean, dan dapat menyebabkan kerentanan keamanan. Kelas System.Uri menyediakan layanan ini dengan cara yang aman dan aman. |
| CA1058: Jenis tidak boleh memperluas jenis dasar tertentu | Jenis yang terlihat secara eksternal memperluas jenis dasar tertentu. Gunakan salah satu alternatif. |
| CA1060: Pindahkan P/Pemanggilan ke kelas NativeMethods | Metode Pemanggilan Platform, seperti yang ditandai dengan System.Runtime.InteropServices.DllImportAttribute atau metode yang ditentukan dengan menggunakan kata kunci Declare di Visual Basic, mengakses kode tak terkelola. Metode ini harus dari kelas NativeMethods, SafeNativeMethods, atau UnsafeNativeMethods. |
| CA1061: Jangan sembunyikan metode kelas dasar | Metode dalam tipe dasar disembunyikan oleh metode dengan nama yang sama dalam tipe turunan, ketika tanda tangan parameter dari metode turunan hanya berbeda dalam tipe yang lebih lemah diwarisi daripada tipe yang sesuai dalam tanda tangan parameter dari metode dasar. |
| CA1062: Memvalidasi argumen metode publik | Semua argumen referensi yang diteruskan ke metode yang terlihat dari luar harus diperiksa terhadap null. |
| CA1063: Terapkan IDisposable dengan benar | Semua jenis IDisposable harus menerapkan pola Dispose dengan benar. |
| CA1064: Pengecualian harus bersifat publik | Pengecualian internal hanya terlihat di dalam cakupan internalnya sendiri. Setelah pengecualian berada di luar cakupan internal, hanya pengecualian dasar yang dapat digunakan untuk menangkap pengecualian. Jika pengecualian internal diwarisi dari System.Exception, System.SystemException, atau System.ApplicationException, kode eksternal tidak akan memiliki informasi yang memadai untuk mengetahui apa yang harus dilakukan dengan pengecualian. |
| CA1065: Jangan ajukan pengecualian di lokasi tak terduga | Metode yang seharusnya tidak melempar pengecualian ternyata melempar pengecualian. |
| CA1066: Terapkan IEquatable saat menggantikan metode Equals | Jenis nilai mengambil alih metode Equals, tetapi tidak menerapkan IEquatable<T>. |
| CA1067: Ambil alih Sama saat menerapkan IEquatable | Jenis mengimplementasikan IEquatable<T>, tetapi tidak mengambil alih metode Equals. |
| CA1068: Parameter CancellationToken harus ditempatkan terakhir | Metode memiliki parameter CancellationToken yang bukan parameter terakhir. |
| CA1069: Enum tidak boleh memiliki nilai duplikat | Enumerasi memiliki beberapa anggota yang secara eksplisit diberi nilai konstanta yang sama. |
| CA1070: Jangan nyatakan bidang peristiwa sebagai virtual | Peristiwa seperti bidang dinyatakan sebagai virtual. |
Berkolaborasi dengan kami di GitHub
Sumber untuk konten ini dapat ditemukan di GitHub, yang juga dapat Anda gunakan untuk membuat dan meninjau masalah dan menarik permintaan. Untuk informasi selengkapnya, lihat panduan kontributor kami.