Profesör tarafından, this
kullanarak açık kurucu çağrısının "kötü kodlama uygulaması" olduğunu ve bunun için cezalandırıldığını söyledim. Bununla birlikte, herhangi bir java tarzı kılavuzda bu yorumları gözden geçirdiğim bir şey bulamadım. Bunun üzerine, gördüğüm oldukça kodlama örneklerinde yapılmış gibi görünüyor. Bunun kötü kodlama uygulaması olup olmadığına dair bir miktar bilgi almayı umuyordum.Açık Constructor Invocation 'bunu' kullanarak kötü kodlama uygulaması?
bir örneği ne bahsediyorum:
public class SomeClass {
private int a;
private int b;
public SomeClass() {
this(0);
}
public SomeClass(int a) {
this(a, 0);
}
public SomeClass(int a, int b) {
this.a = a;
this.b = b;
}
}
DÜZENLEME:. yayınlanan bu yorumu tamamen aynı sınıfın bir kurucu çağırmak Bir yapıcı iyi uygulama değildir Bir yapıcı bir nesne oluşturur, bu nedenle çağırarak" oldu Başka bir kurucuya hafızada neler olduğunu anlatan bir kurucu mu? Genelde
public class Employee {
private String name;
private int monthlySalary;
// Default constructor
public Employee() {
this("", 0);
}
// Constructor
public Employee(String name, int monthlySalary) {
this.name = name;
this.monthlySalary = monthlySalary;
}
// annualSalary() method returns the annual salary of the employee as an int
public int annualSalary() {
return monthlySalary * 12;
}
// toString() method returns the employee name and monthly salary as a
// String in the format: name, monthly salary
public String toString() {
return "Name: " + name + "\t\tMonthly Salary: " + monthlySalary;
}
}
Kötü kodlama uygulaması için bir gerekçe gösterdiler mi? Gidebileceğim tek tahmin aynı isimde çok fazla değişken kullanmaktır (sınıf değişkeni ve yöntem değişkeni arasındaki karışıklık), ama yine de neden% 100 emin değilim ki, bu yüzden ... – Draken
Her aşırı yüklenmede değişkenlerinizi yeniden atamaktan daha iyidir. – shmosel
O sadece bir profesör, bu görüş temelli sorudaki en yüksek otorite değil. Elbette 'bu()', kurucunuzun diğer kuruculara dayandığını, ancak bu tür bağımlılığın "tehlikeli" olduğunu tartışabilir. Sınıfınızın – Kayaman