C#命名和大小写约定

本文关键字:大小写 约定 | 更新日期: 2023-09-27 18:22:21

我是一个VB程序员,过去常常用"_"作为模块级变量的前缀。

我正在使用FXCop、StyleCop和(我认为内置的代码分析,或者可能是指向FXCop,不确定),我正在尝试采用最受欢迎的命名约定。您将如何命名以下模块级私有字段、属性字段和参数字段,以使所有这些代码分析工具都满意并符合公认的或MS标准?请注意,参数名称与私有模块级字段相同可能会令人困惑,FXCop错误地告诉我在"sourcefile"参数字段引用前面加上"this"

我对模块级私有化使用小写的方法可以接受吗?我真正需要做的就是将param重命名为类似于"mySourceFile"或"sourceFileIn"之类的非结构化参数?这感觉是被迫的。params应该是Camel大小写的。我的模块级变量是否漏写?

    public class Restartability
    {
        private readonly string sourceFile;
        public Restartability(string sourceFile)
        {
            this.sourceFile = sourceFile;
        }
        public string SourceFile
        {
            get { return sourceFile; }
        }  
   }

C#命名和大小写约定

我认为私有字段变量应该以'_'为前缀。

这会给你:

private readonly string _sourceFile;

然而,有人认为不需要前缀(来自《清洁代码》一书),因为一个类中不应该有太多变量,因此很难区分字段范围的变量和非字段的变量。

最终,唯一被普遍接受的C#命名约定如下:

  • 命名空间名称为PascalCased
  • 类型名称为PascalCased
  • 类型(包括方法、属性和字段)的公共成员和受保护成员是PascalCased

此外,人们普遍接受,尽管不是普遍接受:

  • 方法和构造函数参数是基于camel的

其余的变化很大,根本不重要。只要你坚持以上几点,你就是金子。

用小写字母启动局部变量和成员变量是很常见的。在我工作的地方,我们选择用_作为成员变量的前缀,但这只是惯例问题。

我会这样写:

public class Restartability {
  private readonly string _sourceFile;
  public Restartability(string sourceFile) {
    _sourceFile = sourceFile;
  }
  public string SourceFile {
    get { return _sourceFile; }
  }  
}

或者使用属性简写:

public class Restartability {
  public string SourceFile { get; private set; }
  public Restartability(string sourceFile) {
    SourceFile = sourceFile;
  }
}

这不会使支持变量变为只读,但setter是私有的,因此只有类本身内部的代码才能设置它。

当我有完全相同名称的私有和公共属性时,我会在末尾用_来命名私有属性。我认为这是一个很好的做法,我们在公司都这样做。我们都是.net开发人员

C#对象字段最常见的命名方案是

  • "m_"前缀:m_sourceFile
  • 前缀为"_":_sourceFile
  • 没有前缀,修复了使用this.引用或仅使用旧sourceFile

如果你从C#开始,并考虑编码风格和惯例,我真的推荐一本名为《C#风格的元素》的书!

我还建议你自己买一份Resharper和重新Sharper插件的stylecop

编码风格在开发人员中是一个有争议的问题,毫无疑问,这里可能会有不同的意见,但我觉得有一条规则比任何规则都重要,那就是无论你使用什么风格,都要保持一致。

一个非常好的开发人员曾经对我说,无论项目有多大,都应该看起来像是同一个开发人员在同一天写的。

现代IDE应该能够突出显示特定于类的变量,从而突出显示_或m_或this。应该是多余的。请参阅:在VS中突出显示Visual Studio相同的令牌以获取有关此方面的更多信息。