[英]Explicit Constructor Invocation using 'this' as poor coding practice?
我被一个教授告诉记者,使用明确的构造函数调用this
是“糟糕的编码实践”,并受到处罚。 但是,我无法在任何java风格指南中找到任何内容,我通过这种方式对其进行了评论。 最重要的是,它似乎是在我看到的相当多的编码示例中完成的。 我希望能得到一些关于这是不良编码实践以及原因的信息。
我所指的一个例子:
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;
}
}
一般来说,使用this
链构造函数是不错的风格。 在特定的例子中它可能是坏的风格,但我只准备根据具体的代码做出判断。 无法判断人工示例(例如,您问题中的无语义示例)。
可能是你的讲师实际上已经“捏造”了你一个不同的问题; 例如
这两种方式(IMO)都是不好的风格,因为它们使您的代码更难以阅读和维护。
有争议的是,当你链接构造函数时,你需要查看更多的构造函数来理解发生了什么。 但反驳的论点是,使所有构造者(人为地)独立地违反了DRY原则。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.