如果您使用 getter 和 setter,您应该如何命名私有成员变量?
题
作为一种后续行动 这个关于前缀的问题, ,我同意线程上大多数人的观点,即前缀不好。但是如果您使用 getter 和 setter 呢?然后,您需要区分可公开访问的 getter 名称和私有存储的变量。我通常只使用下划线,但是有更好的方法吗?
解决方案
这是一个完全主观的问题。没有“更好”的选择。方式。
一种方法是:
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; }
也不是正确的答案。每个都有风格优点和缺点。选择你最喜欢的那个并一致地应用它。
其他提示
我喜欢在字段前加上下划线,正如其他人提到的那样。
private int _x;
我认为这超出了个人的偏好(正如David Arno在这篇帖子中所说)。我认为这样做有一些真正的客观原因:
- 这意味着你不必写“this.x = x”。用于作业(特别是在制定者和构造者中)。
- 它将您的字段与本地变量/参数区分开来。这样做很重要:字段比本地人更难处理,因为它们的范围更宽/寿命更长。添加额外字符对编码员来说是一个心理警示标志。
- 在某些IDE中,下划线将导致自动完成将字段排序到建议列表的顶部。这样可以更容易地在一个块中查看该类的所有字段。这反过来可能会有所帮助;在大类上,您可能无法在与您正在处理的代码相同的屏幕上看到字段(通常在类的顶部定义)。将它们排序到顶部可以提供方便的参考。 醇>
(这些约定适用于Java,但其他语言也存在类似的约定)
这些东西看起来很小,但是当我编码时,它们的流行肯定会让我的生活更轻松。
在java中,python中有this.foo,self.foo和其他语言有类似的东西,所以当我已经可以使用语言结构时,我不认为需要以特殊的方式命名。在相同的上下文中,优秀的IDE和编辑器可以理解成员变量并为它们提供一个特殊的突出显示,因此您可以使用特殊名称来真正看到它。
在区分大小写的语言中我只使用:
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
有多少程序员就可以有多少不同的方法来执行此操作,但一些更流行的方法包括(对于属性 Foo
):
- 米富
- 米富
- _foo
- 富
我喜欢写“this.x = x”。这对我来说非常清楚。此外,在使用Eclipse时,您可以通过这种方式自动生成getter / setter。
不隶属于 StackOverflow