CA1044: Properti tidak boleh tulis saja
Properti | Nilai |
---|---|
ID Aturan | CA1044 |
Judul | Properti tidak boleh hanya tulis |
Golongan | Desain |
Perbaikan bersifat disruptif atau non-disruptif | Merusak |
Diaktifkan secara default di .NET 9 | No |
Penyebab
Properti memiliki aksesor yang ditetapkan tetapi bukan mendapatkan aksesor.
Secara default, aturan ini hanya melihat jenis yang terlihat secara eksternal, tetapi ini dapat dikonfigurasi.
Deskripsi aturan
Dapatkan aksesor menyediakan akses baca ke properti dan set aksesor menyediakan akses tulis. Meskipun dapat diterima dan sering kali diperlukan untuk memiliki properti baca-saja, panduan desain melarang penggunaan properti tulis saja. Ini karena membiarkan pengguna menetapkan nilai dan kemudian mencegah pengguna melihat nilai tidak memberikan keamanan apa pun. Selain itu, tanpa akses baca, status objek bersama tidak dapat dilihat, yang membatasi kegunaannya.
Cara memperbaiki pelanggaran
Untuk memperbaiki pelanggaran aturan ini, tambahkan aksesor get ke properti . Atau, jika perilaku properti tulis-saja diperlukan, pertimbangkan untuk mengonversi properti ini ke metode .
Kapan harus menekan peringatan
Disarankan agar Anda tidak menekan peringatan dari aturan ini.
Mengonfigurasi kode yang akan dianalisis
Gunakan opsi berikut untuk mengonfigurasi bagian mana dari codebase Anda yang akan menjalankan aturan ini.
Anda dapat mengonfigurasi opsi ini hanya untuk aturan ini, untuk semua aturan yang berlaku untuknya, atau untuk semua aturan dalam kategori ini (Desain) yang berlaku untuk aturan ini. Untuk informasi selengkapnya, lihat Opsi konfigurasi aturan kualitas kode.
Menyertakan permukaan API tertentu
Anda dapat mengonfigurasi bagian basis kode mana yang akan dijalankan aturan ini, berdasarkan aksesibilitasnya, dengan mengatur opsi api_surface. Misalnya, untuk menentukan bahwa aturan hanya boleh dijalankan pada permukaan API non-publik, tambahkan pasangan kunci-nilai berikut ke file .editorconfig di proyek Anda:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Nota
Ganti bagian XXXX
CAXXXX
dengan ID aturan yang berlaku.
Contoh
Dalam contoh berikut, BadClassWithWriteOnlyProperty
adalah jenis dengan properti tulis-saja.
GoodClassWithReadWriteProperty
memuat kode yang dikoreksi.
Imports System
Namespace ca1044
Public Class BadClassWithWriteOnlyProperty
Dim someName As String
' Violates rule PropertiesShouldNotBeWriteOnly.
WriteOnly Property Name As String
Set
someName = Value
End Set
End Property
End Class
Public Class GoodClassWithReadWriteProperty
Property Name As String
End Class
End Namespace
public class BadClassWithWriteOnlyProperty
{
string? _someName;
// Violates rule PropertiesShouldNotBeWriteOnly.
public string? Name
{
set
{
_someName = value;
}
}
}
public class GoodClassWithReadWriteProperty
{
public string? Name { get; set; }
}