为什么C#和C++使用_ <variableName>编码约定?

JPC*_*PCF 9 c# c++ coding-style

我看到过多的C#和C++代码,其中变量命名约定似乎要求程序员在变量文本之前使用下划线来编写变量名.e.gr.

int? _countMoney;
Run Code Online (Sandbox Code Playgroud)

支持该公约的理由是什么?

Dar*_*rov 25

在C#中,我通常用_私有字段作为前缀,但从不使用局部变量.这背后的基本原理是当我需要一个私有变量时我输入_并且Intellisense过滤列表并且更容易找到.这样我也可以区分私有变量和局部变量,我不再需要this.variablename为类字段输入,而只是简单地输入_variablename.

  • 如果在查看方法的几秒钟内无法确定变量是否为局部变量,是否可以认为您的方法可能过于复杂?至于Intellisense过滤,编写适合IDE特定功能的代码真的是一个好主意吗? (2认同)
  • @Justin原则问题我同意你的看法,但除非另有说明,否则实际使用VS for C#几乎是一个假设.某些事情在变得可以假装时开始变得更有意义(人文意义上是90%+ ish而不是99.99%的编程意识),就像这些天你一般可以问一个"你的电子邮件地址是什么"而没有先问他们是否有一个.5到10年前你不能这样做,同样对于Java你不能假设Eclipse,因为其他IDE也有相当强的立足点.Python你不能假设编辑器. (2认同)

feh*_*ays 5

这只是识别私有成员变量的简单方法.


pm1*_*100 5

你不应该在c ++中使用_作为前缀.以_开头的名称保留给编译器.

最常见的前缀是c ++是m_(如'member')

对于C#来说,使用_是很常见的.

在我的网站上,我们使用相同数量的c ++和c#,我们总是使用m_来保持一致

  • @Detmar:实际上[它比那更复杂](http://stackoverflow.com/questions/3650623/trailing-underscores-for-member-variables-in-c/3651336#3651336),但你们两个仍然有一个观点. (7认同)
  • 不,在C++名称中以_Uppercase开头是保留的._lowercase很好. (2认同)
  • @ pm100:"在全局命名空间中." 使用它来表示成员字段是非常安全的,而不仅仅是理论上的安全.在课堂之外使用它是事情变得不确定的地方,但这是愚蠢的. (2认同)

So *_*ins 5

Microsoft成员命名准则指定您不为字段使用前缀.

不要为字段名称使用前缀.例如,不要使用g_或s_来区分静态字段和非静态字段.

您可以在此处阅读Microsoft的名称指南.当然,这只适用于C#.