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

标签 c# naming-conventions

<分区>

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

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

现在,我已经阅读了 naming guidelines并使用 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;
    }
}

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

关于c# - C# 中的命名约定 - 全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14521546/

相关文章:

c# - 使相机在跳跃时不跟随 y 轴上的目标?

c# - 检查 Func<T> 不为空而不调用它

lambda - 下划线(_)在elisp中是什么意思?

Java 接口(interface)、AbstractClass 和 Enum 命名约定

Python 类变量的命名约定

c# - 在 C# 中向 Datalogic Barcodescanner 发送蜂鸣信号

c# - 如何捕获从延续抛出的未处理异常?

C# TCP 读取所有数据 - 服务器端问题

javascript - 私有(private) JavaScript 函数 - this.name 与 var name

naming-conventions - 名称 IsFemale 是否不适用于数据库列?