作为对这个关于前缀的问题的跟进,我同意线程上大多数人的观点,即前缀是不好的。但是如果你使用 getter 和 setter 呢?然后,您需要将可公开访问的 getter 名称与私有存储的变量区分开来。我通常只使用下划线,但有更好的方法吗?
Iain
问问题
710 次
6 回答
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; }
两者都不是正确答案。每个都有风格的优点和缺点。选择您最喜欢的一个并始终如一地应用它。
于 2008-10-03T23:07:52.567 回答
6
正如其他人所提到的,我喜欢在字段前加上下划线。
private int _x;
我认为这超出了直接的个人喜好(正如大卫阿诺在这个帖子中所说)。我认为这样做有一些真正的客观原因:
- 这意味着您不必为赋值编写“this.x = x”(尤其是在 setter 和构造函数中)。
- 它将您的字段与本地变量/参数区分开来。这样做很重要:字段比本地人更难处理,因为它们的范围更广/生命周期更长。添加额外的字符对于编码人员来说是一个心理警告信号。
- 在某些 IDE 中,下划线将导致自动完成将字段排序到建议列表的顶部。这样可以更轻松地在一个块中查看该类的所有字段。这反过来会有所帮助;在大类上,您可能无法在与您正在处理的代码相同的屏幕上看到字段(通常定义在类的顶部)。将它们排序到顶部提供了一个方便的参考。
(这些约定适用于 Java,但其他语言也有类似的约定)
这些东西看起来很小,但它们的流行肯定让我在编码时的生活更轻松。
于 2008-10-03T23:18:26.930 回答
3
在 java 中有 this.foo 在 python 中有 self.foo 和其他语言有类似的东西,所以当我已经可以使用语言结构时,我认为不需要以特殊方式命名某些东西。在相同的上下文中,优秀的 IDE 和编辑器理解成员变量并给它们一个特殊的亮点,所以你可以真正看到它而无需使用特殊的名称。
于 2008-10-03T23:07:48.900 回答
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
于 2008-10-03T23:06:49.043 回答
1
执行此操作的方式几乎与程序员执行此操作的方式一样多,但一些更流行的方式包括(对于属性Foo
):
- mFoo
- m_foo
- _foo
- 富
于 2008-10-03T23:07:26.780 回答
1
我喜欢写“this.x = x”。我很清楚。另外,在使用 Eclipse 时,您可以通过这种方式让它自动生成您的 getter/setter。
于 2008-10-04T01:08:05.460 回答