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

时间:2013-01-25 12:10:07

标签: c# naming-conventions

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

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

现在,我已经阅读了naming guidelines并使用了StyleCop,我宁愿不使用下划线,但我的Resharper非常坚持使用_。

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

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

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

4 个答案:

答案 0 :(得分:2)

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

注意:我实际上无法想到任何其他方法。

答案 1 :(得分:1)

根据全局变量,我认为您的意思是conststatic字段

我认为StyleCop用于鼓励您使用ClassName.staticField用于staticconst字段,但它似乎已经删除了该规则,至少在默认情况下如此。尽管如此,这仍然是一种很好的方式。

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

答案 2 :(得分:0)

这只是我个人的意见;

  • 我认为对每个私有变量使用this非常有用;它对代码的可读性有积极影响。此外,当您使用一些DI构造函数注入方法时,它使您可以使用相同的变量而不会产生任何混淆,这看起来非常合适。

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

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

答案 3 :(得分:0)

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

例如,我使用this.variable

的变量

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