Saya mengambil kelas C # sekarang dan saya mencoba mencari cara terbaik untuk melakukan sesuatu. Saya berasal dari latar belakang Java sehingga saya hanya terbiasa dengan praktik terbaik Java; Saya pemula C #!
Di Jawa, jika saya memiliki properti pribadi, saya melakukan ini;
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
Di C #, saya melihat ada banyak cara untuk melakukan ini.
Saya bisa melakukannya seperti Java:
private string name;
public void setName(string name) {
this.name = name;
}
public string getName() {
return this.name;
}
Atau saya bisa melakukannya dengan cara ini:
private string name;
public string Name {
get { return name; }
set { name = value; }
}
Atau:
public string Name { get; set; }
Manakah yang harus saya gunakan, dan peringatan atau kehalusan apa yang terlibat dengan setiap pendekatan? Saat membuat kelas, saya mengikuti praktik terbaik umum yang saya ketahui dari Java (terutama membaca Java Efektif). Jadi misalnya, saya menyukai kekekalan (menyediakan penyetel hanya jika diperlukan). Saya hanya ingin tahu bagaimana praktik ini cocok dengan berbagai cara menyediakan setter dan getter di C #; pada dasarnya, bagaimana saya menerjemahkan praktik terbaik dari dunia Java ke dalam C #?
EDIT
Saya memposting ini sebagai komentar untuk jawaban Jon Skeet tetapi kemudian menjadi panjang:
Bagaimana dengan properti non-sepele (yaitu, dengan pemrosesan dan validasi yang signifikan mungkin)? Bisakah saya tetap mengeksposnya melalui properti publik tetapi dengan logika yang dikemas dalam get
dan set
? Mengapa saya harus melakukan ini karena memiliki metode penyetel dan pengambil yang berdedikasi (dengan logika pemrosesan dan validasi yang terkait).