您不需要在Java中编写“this”关键字。但无论如何这样做会更好吗?将你的风格同质化是否有意义,即如果你使用“this”一次,你每次使用时都会使用它?或者有一个地方,你总是会使用它和其他你从不使用它的地方?
答案 0 :(得分:18)
普遍的共识是,只有在必要时才使用this
而不是在任何其他时间。
private String param;
public Construct(String param) {
// Usually the only place you need to use this.
this.param = param;
}
// A less common use of this
public Function() {
synchronized(this) {
// Some synchronized stuff.
}
}
答案 1 :(得分:6)
作为一项规则,我倾向于不使用它 - 如果你可以减少冗余代码,那就更好了。
但是我可以想到有三个地方可以避免使用此关键字:
构造函数(委托给同一个类中的另一个构造函数)
public MyClass() {
this("Default Parameter");
在当前对象上进行同步
synchronized(this) {
将当前对象传递给另一个类
public void methodOne() {
anotherClass.doSomething(this);
有时你需要在字段名称与参数相同的构造函数中使用它,但这不是必须的,因为你可以简单地重命名参数:
public MyClass(String data) {
this.data = data
除了这些,我无法想到太多其他我使用this
关键字的情况。我已经看到它被过度使用(在每个方法和字段引用上),这可能使代码很难阅读。
仅在必要时使用它,或者当您认为它增强了代码可读性时才使用它。
答案 2 :(得分:4)
作为一般规则,您应该避免在任何可能出现的地方使用冗余语法。你会读到许多相反的观点,主要指的是一个神秘的程序员,他不了解成员变量,不知道括号的用途,也不记得他在第三节讲授的算子优先级规则年级。我40年来从未见过他。这并不足以证明他为自己毁掉代码的理由是假设他会(a)不理解它并且(b)因此打破它。我从来没有见过这种情况。
我看到的是由这样的人制作的代码。这不是为他愚弄自己的代码的理由。有人实际上已经错误地重写了我的一段代码的情况恰好是两个:曾经在1979年,有人重构了一个语法来删除运算符优先级,这是愚蠢的,他不应该这样做它,以及大约1992年的另一次,但在这两种情况下,我都无法编写会阻止它的语法或代码。
答案 3 :(得分:2)
代码中有一些地方,您无法跳过this
个关键字,例如设置器:
public void setValue(String value) {
this.value = value;
}
但如果可能的话,最好跳过:
public String getValue() {
return value;
}