在Java中使用“this”与短参数名称

时间:2011-05-07 06:41:41

标签: java parameters this

您更喜欢哪个?为什么?

public void setPresenter(Presenter presenter) {
    this.presenter = presenter;
}

public void setPresenter(Presenter p) {
    presenter = p;
}

4 个答案:

答案 0 :(得分:10)

我更喜欢this - 符号,至少在构造函数和复合setter方法中,你有多个参数。

  • 您不必为每个字段提供两个变量名称。
  • 从“外部”可以清楚地看出,论证代表什么。
  • 这是一种标准方法。

在setter的特定情况下,我实际上没有意见,因为方法名称足够解释,并且实现是单个赋值。

答案 1 :(得分:3)

我更喜欢this - 此课程说明原因

class foo {

    int value;
    int otherValue;

    void setValue(int i) {
        value = i;
    }

    void setOtherValue(int i) {
        otherValue = i;
    }

    // uhh what? 
    void setBoth(int i, int j) {
        // which one should be first? oh, you guessed and got it wrong? tooooo bad!

    }


}

答案 2 :(得分:2)

对于方法,我们使用完整的单词作为变量和TLA,因此我们将使用:

public void setPresenter(Presenter prs) {
    presenter=prs;
    }

这允许使用相当清晰的名称,避免由省略的this引起的错误分配错误,并明确区分长期/宽范围标识符与短期/窄范围标识符。

答案 3 :(得分:1)

我不想使用this,因为(意外地)将其遗漏(虽然主要使用它)可能会导致更长的方法出现阴影错误。

但是,您应该为参数使用合理的名称。 这就是为什么我更喜欢为参数和局部变量使用前缀:

public void setPresenter(Presenter pPresenter) {
    presenter = pPresenter;   //pXxxx stands for 'parameter'
    Presenter tPresenter = pPresenter;  //tXxxx stands for 'temporary' or local
}