读一本书,它说这两个是专制的惯例:
但是在很多地方,我可以看到,特别是在属性方面,作者没有遵循这一点,例如:
private int x
和
public int X
..
与下划线相同..有时他使用_x和X作为属性。
请问正确的命名约定是什么?
答案 0 :(得分:6)
所有标识符的规则都不相同。并且有多种标准,只要它们被一致地使用,它们都是好的。
我从MS指南中记得:
但是camelCasing只是意味着“不要以资本开头”,field
,_field
,mField
和m_field
都符合资格。
答案 1 :(得分:4)
除了所有其他的好答案之外,我还要补充说,开始带有两个下划线的标识符是一种不好的做法。 C#规范说我们保留以两个下划线开头的东西具有特殊含义的权利。这是我们的逃生舱,因此如果我们真的需要,我们可以在不破坏任何人的情况下为语言添加新功能。或者,我们可以使用以两个下划线开头的方法作为专用编译器生成的方法。
答案 2 :(得分:3)
正如其他人所提到的,命名约定因开发人员和团队而异。唯一非常重要的是你一致。
如果您正在寻找可遵循的准则,Microsoft将为.NET Framework发布一组常规命名约定。他们在网站上有点分散,但this page是一个好的开始。
执行摘要如下:
BackColor
)backColor
)。此外,您经常会看到以下划线前缀命名的私有变量(特别是那些具有相应公共属性的变量)(例如_backColor
)。另一个惯例是m_
。
答案 3 :(得分:2)
我不完全确定有正确命名标识符的方式。有些人使用下划线表示成员变量,有些人使用m_
前缀。有些使用下划线表示已作为参数传入的变量。
至于大写字母,有些人使用它们,有些则使用“驼峰套管”,这是第一个字母是非资本的,但随后的“字”是,例如:
thisIsCamelCase
重要的是,你是一致的。如果您决定使用_
作为成员的前缀,请确保所有成员都具有该约定。
就个人而言,我使用_
作为参数的前缀,使用m_
作为成员的前缀。
public class Vector
{
private float m_X;
private float m_Y;
private float m_Z;
public Vector(float _x, float _y, float _z)
{
m_X = _x;
m_Y = _y;
m_Z = _z;
} // eo ctor
} // eo class Vector
你的书传讲“绝不会永远不会”然后立刻忽略了它自己的建议,这听起来很狡猾。
答案 4 :(得分:1)
这取决于你所在的品味或团队。
变量永远不会以大写字母或数字开头。 您可以使用下划线,这是许多开发人员首选的,因为所有的现场成员都通过intellisense在visual studio中组合在一起。
private int _number;
private int _Number;
他们中的大多数更喜欢下划线和大写字母,因为在编写普通变量名时,您使用camelCaseNotation。
你会这样写:
private int number;
但是因为你使用下划线,第一个char是下划线而下一个char是大写的(参见camelCaseNotation) 像这样:
private int _Number;
对于属性,您只需使用不带前缀的大写字母编写它们:
public int Number { get; set; }
关于参数,如果您愿意,可以使用与字段成员相同的下划线前缀:
private int _Number;
public MyClass(int _Number) {
this._Number = _Number;
}
没有对错,只是尝试遵循语言准则并使自己适应您正在使用的团队。与您的团队讨论您将使用的内容,并使用相同的内容,这样可以更好地阅读代码。
关于m_前缀表示法或匈牙利表示法(sName,iNumber,...),这有点“旧”,试图避免这种情况(大多数C / C ++ - 程序员使用C#的新手)。 / p>
答案 5 :(得分:0)
我想补充说,常见的是只使用大写字母表示常量
public const int STATUS_OK = 0;