在类中使用无关的`this`引用有什么约定?

时间:2014-06-25 21:53:50

标签: oop this

在无关的情况下使用this关键字的惯例是什么?例如,请考虑以下类声明:

class Test {
   private int privateVariable;

   public Test(int constructorVariable) {

     this.privateVariable = constructorVariable;

   }
}

构造函数中this之前的privateVariable是无关紧要的,但它使代码更容易理解(在我看来)。所以你这样使用它吗?

2 个答案:

答案 0 :(得分:1)

在大多数情况下,这是个人/团队偏好的问题。在某些情况下,它具有结构意义。例如,考虑在构造函数中为final类成员提供值的Java约定:

private final int someValue;

public SomeClass(int someValue) {
    this.someValue = someValue;
}

在这种情况下,需要this关键字来明确定义在同一范围内引用两个同名变量中的哪一个。鉴于这种方法,团队通常倾向于使用this明确引用值,而不是使用名称,例如:

private final int _someValue;

public SomeClass(int someValue) {
    _someValue = someValue;
}

(我不是100%肯定,如果Java会抱怨这一点,但C#除了final关键字之外不会这样做。)这实际上是做同样的事情,但是它预示着一个潜在丑陋的下划线到一个其他地方没用的值。相反,将下划线(或任何其他此类不必要的装饰)添加到方法参数中会在智能感知和生成的文档中进行广告,这也是不可取的。

因此,虽然归结为偏好,但通常情况下,偏好的基础是善意保持名称一致和有意义的愿望。

答案 1 :(得分:0)

取决于您(或您的公司)正在使用的样式指南。如果你没有,this document是一个好的开始,也支持你的建议。

其他样式指针 - 尤其是从其他语言派生时,例如c ++ - 更喜欢使用_或m_

为私有成员添加前缀
private int _privateVariable;
private int m_privateVariable;

或者甚至可以使用匈牙利语表示法(请参阅this article了解dos和don&#ts; ts)

private string m_strPrivateVariable;

如果您负责做出决定,请阅读一些文章,选择最适合您需求和偏好的文章。但在做出决定后,坚持下去并加以执行。