C# 中的命名约定 - 全局变量

本文关键字:全局变量 命名约定 | 更新日期: 2023-09-27 17:56:04

我知道关于在私有字段/属性中使用this关键字或下划线存在争论/意见(我会提到,我被困在.NET 2.0上)

就个人而言,我更喜欢this,但有时您无法使用它,例如,当您需要从静态方法中引用全局变量时。好吧,然后我们被迫使用下划线(假设我们只有 2 个选择,this或下划线)。这意味着如果我的类使用任何静态方法,我不能在整个文档中this使用。

现在,我已经阅读了命名指南并使用了 StyleCop,两者都宁愿我不使用下划线,但我的 Resharper 几乎坚持使用 _。

我觉得让一个类使用 _ 而下一个类使用 this 只是为了适应类混合非静态和静态方法的情况是不对的!关于 SO 的建议是保持一种实现/风格,但我不知道这是否意味着我应该忽略Microsoft(我知道 MS 并不总是遵循他们自己的规则)!

有人建议用其他东西作为前缀,类似于匈牙利语,但前缀为 globVariableName,其中 glob 表示全局。我讨厌这个想法,它太定制了,对我团队之外的任何其他开发人员来说都不是显而易见的。

所以,我的问题是,一致定义全局变量的最佳方法是什么?由于它们是命名指南,因此我可以忽略(至少_可以始终如一地使用,但是忽略语言创建者的建议感觉是错误的)。

C# 中的命名约定 - 全局变量

只需在静态类中使用类名,就像在静态类中使用"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;
    }
}

注意:我实际上想不出任何其他方法可以做到这一点。

通过全局变量,我假设你的意思是conststatic字段

我认为 StyleCop 曾经鼓励您将ClassName.staticField用于staticconst字段,但它似乎已经放弃了该规则,至少默认情况下是这样。不过,这仍然是一种不错的方法。

此外,您可以配置Resharper以很好地与StyleCop配合使用。

我总是对静态变量和实例变量使用下划线。

对于实例变量,我使用this.variable

对于static变量 i ,有时,在它们前面加上类的名称,例如ClassName.variable

这只是

我个人的看法;

  • 我相信对每个私有变量使用 this 非常有用;它对代码的可读性有积极的影响。此外,当您使用某些 DI 构造函数注入方法时,它使您能够使用相同的变量而不会造成任何混淆,这似乎非常合适。

    public void SomeMethod(int someVariable)
    {
        this.someVariable = someVariable;
    }
    
  • 我更喜欢this而不是下划线;下划线乍一看似乎很漂亮;但参考前面的例子,它对可读性有负面影响。

  • 我用与命名类变量相同的方式命名静态变量;使用this关键字降低了私有变量和静态变量之间混淆的风险。