“这个”影子是个好主意吗?

2022-09-03 12:11:21

阴影类变量的情况在Java中很常见。Eclipse 将很乐意生成以下代码:

public class TestClass {
    private int value;
    private String test;
    public TestClass(int value, String test) {
        super();
        this.value = value;
        this.test = test;
    }
    public int getValue() {
        return value;
    }
    public void setValue(int value) {
        this.value = value;
    }
    public String getTest() {
        return test;
    }
    public void setTest(String test) {
        this.test = test;
    }
}

变量阴影可以吗?

我正在考虑实施一个编码规则,说“不允许阴影”。在上面的简单案例中,正在发生的事情已经足够清楚了。添加更多执行某些操作的代码,您将面临丢失“this”并引入错误的风险。

普遍的共识是什么?禁止阴影,有时允许它,还是让它滚动?


答案 1

实际上,我更喜欢“仅在构造函数和 setter 中允许阴影”的准则。其他一切都是不允许的。
省去了命名构造函数参数的麻烦,只是为了避免阴影。aValueaTest

如果您使用的是eclipse,则可以将其警告设置完全设置为该选项BTW。


答案 2

在使用 Eclipse 和 IntelliJ IDEA 等 IDE 时,我对变量阴影感到安全,这些 IDE 以与局部变量不同的颜色突出显示字段,并且还针对局部变量的误用提供了有用的警告。


推荐