Java:什么被认为更具可读性,“这个”或没有“这个”

时间:2013-02-18 09:07:22

标签: java coding-style this readability

您不需要在Java中编写“this”关键字。但无论如何这样做会更好吗?将你的风格同质化是否有意义,即如果你使用“this”一次,你每次使用时都会使用它?或者有一个地方,你总是会使用它和其他你从不使用它的地方?

4 个答案:

答案 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;
}