4

作为对这个关于前缀的问题的跟进,我同意线程上大多数人的观点,即前缀是不好的。但是如果你使用 getter 和 setter 呢?然后,您需要将可公开访问的 getter 名称与私有存储的变量区分开来。我通常只使用下划线,但有更好的方法吗?

4

6 回答 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;

我认为这超出了直接的个人喜好(正如大卫阿诺在这个帖子中所说)。我认为这样做有一些真正的客观原因:

  1. 这意味着您不必为赋值编写“this.x = x”(尤其是在 setter 和构造函数中)。
  2. 它将您的字段与本地变量/参数区分开来。这样做很重要:字段比本地人更难处理,因为它们的范围更广/生命周期更长。添加额外的字符对于编码人员来说是一个心理警告信号。
  3. 在某些 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 回答