Şu anda bir C # dersi alıyorum ve bir şeyler yapmanın en iyi yolunu bulmaya çalışıyorum. Java geçmişinden geliyorum ve bu nedenle yalnızca Java'nın en iyi uygulamalarına aşinayım; Ben bir C # acemiyim!
Java'da özel mülküm varsa, bunu yapıyorum;
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
C # 'da bunu yapmanın birçok yolu olduğunu görüyorum.
Java gibi yapabilirim:
private string name;
public void setName(string name) {
this.name = name;
}
public string getName() {
return this.name;
}
Ya da şu şekilde yapabilirim:
private string name;
public string Name {
get { return name; }
set { name = value; }
}
Veya:
public string Name { get; set; }
Hangisini kullanmalıyım ve her yaklaşımla ilgili uyarılar veya incelikler nelerdir? Sınıflar oluştururken, Java'dan bildiğim genel en iyi uygulamaları takip ediyorum (özellikle Etkili Java'yı okuyorum). Örneğin, ben değişmezliği destekliyorum (yalnızca gerekli olduğunda ayarlayıcılar sağlamak). Bu uygulamaların, C # 'da ayarlayıcılar ve alıcılar sağlamanın çeşitli yollarına nasıl uyduğunu merak ediyorum; esasen, Java dünyasındaki en iyi uygulamaları C # 'a nasıl çevirebilirim?
DÜZENLE
Bunu Jon Skeet'in cevabına yorum olarak gönderiyordum ama sonra uzadı:
Önemsiz olmayan bir özelliğe ne dersiniz (yani, önemli işleme ve doğrulama ile)? Hala bir kamu malı yoluyla ancak kapsüllü mantığı ile korumasız kalmasına neden get
ve set
? Bunu neden adanmış ayarlayıcı ve alıcı yöntemlerine (ilişkili işleme ve doğrulama mantığıyla) sahip olmak yerine yapmalıyım / yapmalıyım?