什么是C#中私有变量的最佳实践和最普遍接受的命名约定?
private int myInteger;
private int MyInteger;
private int mMyInteger;
private int _myInteger;
private int _MyInteger;
- 神秘的其他选择
您使用哪个?为什么?(我的公司对C#来说还很陌生,我想选择一种最“行业认可”的方法来尝试进入我们的编码标准。)
什么是C#中私有变量的最佳实践和最普遍接受的命名约定?
private int myInteger;
private int MyInteger;
private int mMyInteger;
private int _myInteger;
private int _MyInteger;
您使用哪个?为什么?(我的公司对C#来说还很陌生,我想选择一种最“行业认可”的方法来尝试进入我们的编码标准。)
Answers:
MSDN类设计指南http://msdn.microsoft.com/zh-cn/library/ta31s3bc.aspx建议使用选项1-myInteger。
我一直使用这种风格。我个人不喜欢_字符。
myInteger
,它将与匹配_myInteger
。但是我不知道MSDS说不要使用_
myInteger
方法变量是本地变量还是私有类成员?
this.myInteger
;)
this
每次都键入,只需在存在相同名称的局部变量的方法中键入即可。但是,如果使用下划线,则每次都需要写一个额外的符号。我同意,遵守您的本地代码样式协议始终很重要。
我认为选项4确实是最易读的选项。它可以帮助您避免这样做:
public Person(string name, int age)
{
this.name = name;
this.age = age;
}
这也使所有私人成员更加引人注目。在以下示例中,到底是哪里age
来的?没有this
预选赛,很难说。
private void Method()
{
var x = 2;
var y = age + x;
}
这是更容易理解的方式:
private void Method()
{
var x = 2;
var y = _age + x;
}
首先,PascalCasing通常保留给该类的公共属性,const,方法等。所以我将跳过2和5。
其次,在.NET世界中不鼓励使用匈牙利表示法,因此(嗯,我认为)3是正确的。假设这就是3。
剩下的就是camelCasing和_camelCasing。我通常将_camelCasing用于类变量,将普通的camelCasing用于范围为方法或更窄范围的变量。骆驼套是用于方法自变量,受保护/专用变量名称以及方法内或更窄范围内的变量的公认标准。
我还喜欢在下划线前加上前缀,以便将我的私有变量归为智能感知。但是,我仅对范围限定为类型的变量执行此操作。在方法或更狭窄的范围内声明的变量我不使用下划线。使它们容易分开并将较少使用的变量保持在一起很容易。
I don't understand why you would use _camelCasing for class variables
,I'm talking about the difference between Color.ClassMethod() and myColor.InstanceMethod()
请给您: 之后,请您: 当我感到困惑时,请原谅。听着,我很少使用类变量,因此很高兴通过单击_并让它们全部出现在智能提示中并进行分组来提醒它们的名称。
private int integer
如果您在方法范围内的成员变量和局部变量之间感到困惑,则可能需要重构。
integer
最好改写这个名字,也许value
吧?
在C ++中,我倾向于使用_,因为我经常切换编辑器,这不允许我查看它是否是私有的。
对于C#,我倾向于忽略_,因为Visual Studio允许我查看它是否私有。
我倾向于使用驼峰案例的方式来做到这一点。
下划线。
Bill Wagner解释了在有效C#中的原因。但我绝不会整数命名一个我的整数,更好像_age或_length。在实例名称中包含TypeName是一种可怕的做法。名称应该是自解释性的,并且由于C#是类型安全类型,因此可以随时发现。
Juval Lowy的IDesign C#编码标准非常受欢迎。该标准建议在私有成员变量前面加上“ m _”(选项6)。这就是我们在团队中所做的。
private int m_myInteger;
选项4(_myInteger
)是此标准的可接受的变体。
我不喜欢MSDN建议(myInteger
),因为它很难从局部变量中告诉私有成员。当然,他们的建议通过使用限定私人成员的this
身份来解决此问题,这对我来说似乎是多余的。