C# 中的命名约定 - 全局变量
本文关键字:全局变量 命名约定 | 更新日期: 2023-09-27 17:56:04
我知道关于在私有字段/属性中使用this
关键字或下划线存在争论/意见(我会提到,我被困在.NET 2.0上)
就个人而言,我更喜欢this
,但有时您无法使用它,例如,当您需要从静态方法中引用全局变量时。好吧,然后我们被迫使用下划线(假设我们只有 2 个选择,this
或下划线)。这意味着如果我的类使用任何静态方法,我不能在整个文档中this
使用。
现在,我已经阅读了命名指南并使用了 StyleCop,两者都宁愿我不使用下划线,但我的 Resharper 几乎坚持使用 _。
我觉得让一个类使用 _ 而下一个类使用 this
只是为了适应类混合非静态和静态方法的情况是不对的!关于 SO 的建议是保持一种实现/风格,但我不知道这是否意味着我应该忽略Microsoft(我知道 MS 并不总是遵循他们自己的规则)!
有人建议用其他东西作为前缀,类似于匈牙利语,但前缀为 globVariableName,其中 glob 表示全局。我讨厌这个想法,它太定制了,对我团队之外的任何其他开发人员来说都不是显而易见的。
所以,我的问题是,一致定义全局变量的最佳方法是什么?由于它们是命名指南,因此我可以忽略(至少_可以始终如一地使用,但是忽略语言创建者的建议感觉是错误的)。
只需在静态类中使用类名,就像在静态类中使用"this"一样。 示例如下:
public static class MyStatic
{
public static object Global;
public static void SomeMethod()
{
var theGlobal = MyStatic.Global;
}
}
public class MyNonStatic
{
public object Global;
public void SomeMethod()
{
var theGlobal = this.Global;
}
}
注意:我实际上想不出任何其他方法可以做到这一点。
通过全局变量,我假设你的意思是const
或static
字段
我认为 StyleCop 曾经鼓励您将ClassName.staticField
用于static
和const
字段,但它似乎已经放弃了该规则,至少默认情况下是这样。不过,这仍然是一种不错的方法。
此外,您可以配置Resharper以很好地与StyleCop配合使用。
我总是对静态变量和实例变量使用下划线。
对于实例变量,我使用this.variable
对于static
变量 i ,有时,在它们前面加上类的名称,例如ClassName.variable
我个人的看法;
我相信对每个私有变量使用
this
非常有用;它对代码的可读性有积极的影响。此外,当您使用某些 DI 构造函数注入方法时,它使您能够使用相同的变量而不会造成任何混淆,这似乎非常合适。public void SomeMethod(int someVariable) { this.someVariable = someVariable; }
我更喜欢
this
而不是下划线;下划线乍一看似乎很漂亮;但参考前面的例子,它对可读性有负面影响。我用与命名类变量相同的方式命名静态变量;使用
this
关键字降低了私有变量和静态变量之间混淆的风险。