如果您使用的是getter和setter,那么如何命名私有成员变量?

时间:2008-10-03 22:59:08

标签: setter getter prefixes

作为this question about prefixes的后续行为,我同意线程上的大多数人认为前缀不好。但是,如果你使用吸气剂和制定者怎么办?然后,您需要将可公开访问的getter名称与私有存储的变量区分开来。我通常只使用下划线,但是有更好的方法吗?

6 个答案:

答案 0 :(得分:6)

这是一个完全主观的问题。没有“更好”的方式。

一种方法是:

private int _x;
public get x():int { return _x; }
public set x(int val):void { _x = val; }

另一个是:

private int x;
public get X():int { return x; }
public set X(int val):void { x = val; }

也不是正确的答案。每个都有风格优点和缺点。选择你最喜欢的那个并一致地应用它。

答案 1 :(得分:6)

我喜欢在字段前加上下划线,正如其他人提到的那样。

private int _x;

我认为这超出了个人的偏好(正如David Arno在这篇帖子中所说)。我认为这样做有一些真正的客观原因:

  1. 这意味着您不必为分配编写“this.x = x”(特别是在setter和构造函数中)。
  2. 它将您的字段与本地变量/参数区分开来。这样做很重要:字段比本地人更难处理,因为它们的范围更宽/寿命更长。添加额外字符对编码员来说是一个心理警示标志。
  3. 在某些IDE中,下划线将导致自动完成将字段排序到建议列表的顶部。这样可以更容易地在一个块中查看该类的所有字段。这反过来可能会有所帮助;在大类上,您可能无法在与您正在处理的代码相同的屏幕上看到字段(通常在类的顶部定义)。将它们排序到顶部可以提供方便的参考。
  4. (这些约定适用于Java,但其他语言也存在类似的约定)

    这些东西看起来很小,但是当我编码时,它们的流行肯定会让我的生活更轻松。

答案 2 :(得分:3)

在java中,python中有this.foo,self.foo和其他语言有类似的东西,所以当我已经可以使用语言结构时,我不认为需要以特殊的方式命名。在相同的上下文中,优秀的IDE和编辑器可以理解成员变量并为它们提供一个特殊的突出显示,因此您可以使用特殊名称来真正看到它。

答案 3 :(得分:1)

在区分大小写的语言中我只使用:

private int myValue;

public int MyValue
{
    get { return myValue; }
}

否则我会使用下划线

Private _myValue As Integer

Public ReadOnly Property MyValue As Integer
    Get
        Return _myValue
    End Get
End Property

答案 4 :(得分:1)

有很多不同的方法可以做到这一点,因为有程序员这样做,但一些比较流行的方式包括(对于属性Foo):

  • mFoo
  • m_foo
  • _foo
  • FOO

答案 5 :(得分:1)

喜欢写“this.x = x”。这对我来说非常清楚。此外,在使用Eclipse时,您可以通过这种方式自动生成getter / setter。