7
一位教授告訴我,使用this
的顯式構造函數調用是「糟糕的編碼實踐」,因此受到懲罰。然而,我一直無法在任何java風格指南中找到任何東西,我已經通過這種或那種方式評論了這些評論。最重要的是,它似乎是在我見過的很多編碼示例中完成的。我希望得到一些關於這是否糟糕的編碼習慣以及爲什麼。顯式構造函數使用'this'作爲糟糕的編碼實踐?
的一個例子就是我指的是:
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;
}
}
編輯: 他的評論正好是「一個構造函數調用同一類的構造函數是不是好的做法構造函數創建一個對象,所以調用。一個構造函數調用另一個構造函數在內存中發生了什麼?有關於事情的東西。「
這是具體代碼:
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;
}
}
他們是否給出了一個推理性差的編碼習慣?我唯一能做的就是使用相同名稱的太多變量(類變量和方法變量之間的混淆),但我仍然不能100%確定他們爲什麼會這樣說... – Draken
我認爲它好得多比在每個重載中重新分配變量。 – shmosel
他只是一名教授,他不是這個基於觀點的問題的最高權威。當然,使用this()會使你的構造函數依賴於其他的構造函數,但這種依賴性有多「危險」,這是值得商榷的。 – Kayaman