6

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

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

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

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

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

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

4

4 回答 4

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;
    }
}

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

于 2013-01-25T12:20:00.533 回答
1

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

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

此外,您可以配置 Resharper 以与 StyleCop 完美配合。

于 2013-01-25T12:19:05.247 回答
0

这只是我个人的看法;

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

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

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

于 2013-01-25T12:23:37.003 回答
0

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

例如我使用的变量this.variable

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

于 2013-01-25T12:26:40.977 回答