作为一种后续行动 这个关于前缀的问题, ,我同意线程上大多数人的观点,即前缀不好。但是如果您使用 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在这篇帖子中所说)。我认为这样做有一些真正的客观原因:

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top