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