私有局部变量的下划线?

时间:2009-04-28 17:49:12

标签: c# .net

对于私有局部变量,使用下划线似乎是BCL的情况。我从来没有使用过它们,但却这样离开:

int count = 0;

this.Count++;

public int Count
...

public ClassName ( int count )
{
    this.Count = count;
}

您对此有何看法?他们的方法有问题吗?

7 个答案:

答案 0 :(得分:3)

这基本上是你必须自己决定的,只需找到或制作一个风格指南并遵循它。

就个人而言,我使用_作为该类私有字段的前缀。

答案 1 :(得分:2)

我们在这里使用的简单规则是:类的私有实现细节(包括变量名)完全取决于制作它的开发人员。公共/受保护的方法名称,属性,类名称等受最佳实践指南的约束。内部类型甚至可以被认为是其中的一部分,因为它们不是公开可见的。

当其他人需要使用您的图书馆时,它永远不会使用内部或私人类型,也不会看到您是否使用了下划线等。换句话说,这完全取决于您....

请记住,如果其他人必须稍后维护您的代码,那么它不应该过于模糊......

答案 2 :(得分:1)

不需要使用下划线来表示私有变量。这都是个人喜好。我只使用它们,所以我知道我使用局部变量而不是让Intellisense意外地使用我的公共属性。

答案 3 :(得分:1)

IMO,您永远不应该将私有成员变量命名为与属性,方法或其他任何内容相同的名称。应该清楚您正在使用哪个命名项目。这将使您的代码更易于理解和维护,并且可以自己或需要维护代码的其他开发人员减少编程错误。

此外,如果您想将代码移植到VB,那么该特定命名将无效。不知道你为什么要切换到VB,但它发生了。

答案 4 :(得分:1)

我使用下划线。它有助于我控制可变范围并减少命名冲突的可能性。

答案 5 :(得分:1)

对于不区分大小写的语言(如VB.Net),下划线更有意义。在像C#这样的语言中,它完全取决于个人偏好。

如果你厌倦了将this.置于某些模棱两可的任务前面,那么下划线就是适合你的。如果没有它们,偶尔会偶然发生这样的事情:

private int that;

public void AssignThat(int that)
{
    that = that;  // assigns to method scope variable, not instance scope
}

FXCop或R#应该为你抓住这个,我相信你得到编译器警告,但它是可能的。

答案 6 :(得分:0)

使用前缀IntelliSense有一个实际的原因。 ATM它的制作方式是它没有真正区分当前实例变量和继承属性/变量。因此,对私有变量使用'_'可以更容易地在VS代码编辑器中的intellisense列表和函数/变量列表中找到变量。所以在某种程度上它是更广泛的匈牙利符号。