是否应启用Checkstyle的RequireThis检查?

问题描述 投票:6回答:5

内置的Checkstyle检查之一是RequireThis,只要您不将this.放在本地字段或方法调用之前,该检查就会关闭。例如,>

public final class ExampleClass {
    public String getMeSomething() { 
        return "Something"; 
    }

    public String getMeSomethingElse() {
        //will violate Checkstyle; should be this.getMeSomething()
        return getMeSomething() + " else"; 
    }
}

我正在努力检查是否合理。在上面的示例中,ExampleClass是最终的,应保证

调用getMeSomething的“正确”版本。另外,在某些情况下,您可能希望子类重写默认行为,在这种情况下,要求“ this”是错误的行为。

最后,似乎过分防御的编码行为只会使源头混乱,并使实际上

进行到底变得更加困难。

因此,在我向建筑师建议启用此检查之前,我想知道其他人是否启用了此检查

?您是否由于缺少this而发现了严重的错误?

内置的Checkstyle检查项之一是RequireThis,只要您不先执行此操作,它就会关闭。本地字段或方法调用。例如,公共最终类ExampleClass {...

java this checkstyle
5个回答
4
投票

RequireThis规则确实具有有效的用途,因为它适用于字段时可以防止方法和构造函数中的可能错误。下面的代码几乎可以肯定是一个错误:


4
投票

我肯定会关闭它。使用this.foo()是非惯用Java,因此仅在必要时使用,以表示代码中正在发生特殊情况。例如,在二传手中:


3
投票
以“ this。不会阻止调用调用子类中的重写方法,因为这是指“此对象”而不是“此类”。但是,它应该阻止您将静态方法误认为实例方法。

3
投票
我个人不会启用它。通常是因为每当我阅读代码时,我都会在IDE(或其他进行智能代码格式化的东西)中阅读它。这意味着,不同类型的方法调用和字段访问是根据其实际语义含义而不是根据某些(可能是错误的)指示来格式化的。

1
投票
我只对字段启用此检查,因为我喜欢'this.'在字段前面添加的额外信息。请参阅我的(旧)问题:Do you prefix your instance variable with ‘this’ in java ?
© www.soinside.com 2019 - 2024. All rights reserved.