Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#命名和大小写约定_C# - Fatal编程技术网

C#命名和大小写约定

C#命名和大小写约定,c#,C#,我是一个VB的家伙,过去常在模块级变量前面加上“\ux” 我正在使用FXCop、StyleCop和(我认为是内置的代码分析,或者可能是指向FXCop的,不确定),并且我正在尝试采用最为接受的命名约定。您将如何命名以下模块级私有、属性和参数字段,以使所有这些代码分析工具满意,并符合普遍接受的标准或MS标准?请注意,参数名称与专用模块级字段相同可能会造成混淆,FXCop错误地告诉我在“sourcefile”参数字段引用前面加上“this” 我对模块级私有文件使用小写的方法可以接受吗?我真正需要做的就

我是一个VB的家伙,过去常在模块级变量前面加上“\ux”

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

我对模块级私有文件使用小写的方法可以接受吗?我真正需要做的就是将参数重命名为“myourcefile”或“sourceFileIn”之类的非自然值,这感觉很强迫。参数应为驼峰式。我的模块级变量是否有遗漏

    public class Restartability
    {
        private readonly string sourceFile;

        public Restartability(string sourceFile)
        {
            this.sourceFile = sourceFile;
        }

        public string SourceFile
        {
            get { return sourceFile; }
        }  

   }

我认为私有字段变量的前缀应该是“\u1”

这将给你:

private readonly string _sourceFile;

但是,可以说不需要前缀(来自《干净代码》一书),因为一个类中不应该有太多的变量,以至于很难区分字段范围变量和非字段范围变量。

当我有完全相同名称的私有和公共属性时,我给私人的命名,结尾有一个u。我认为这是一个很好的做法,我们公司都这么做。我们都是.net开发人员

通常使用小写字母启动局部变量和成员变量。在我工作的地方,我们选择在成员变量前面加上
,但这只是惯例问题

我会这样写:

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是私有的,因此只有类内部的代码才能设置它。

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

  • “m_”前缀:
    m_源文件
  • 一个“u”前缀:
    \u源文件
  • 没有前缀和使用
    this.
    引用的修复程序,或者只是简单的旧
    源文件
最终,C#唯一被普遍接受的命名约定如下:

  • 命名空间名称是PASCALCASE
  • 类型名称是PASCALCASE
  • 类型的公共和受保护成员(包括方法、属性和字段)是PASCALCA的
此外,人们普遍接受(尽管不是普遍接受):

  • 方法和构造函数参数都是CAMELCASE

其余的变化很大,这并不重要。只要你坚持以上,你就是黄金

如果你是从C开始的,并且考虑编码风格和惯例,我真的推荐一本书叫

我还建议你自己买一份

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


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

现代IDE应该能够突出显示特定于类的变量,因此u或m_u或此。应该是多余的。请参阅:有关VS.

中的更多信息,这是我经常关闭的第一个StyleCop规则之一。我不喜欢这种冗长的
语法。我也在我的字段前面加了一个下划线。不过,首先命名这些字段与您现有的代码库是一致的。第二,你在组织中同意的方式(这包括使用前缀或匈牙利语,如果这有助于你阅读代码)。退到第三步。最后,设置StyleCop以遵循您想要的规则;它只是一个工具,它不知道什么最适合你。记住,命名约定——每个命名约定——都是完全任意的。此外,在任何真正的代码库中,当涉及到代码的可理解性时,都不会是“成功或失败”的因素。追求可读性标准是值得的,只有当你看不到树的森林时才值得。警告1 SA1309:字段名不能以下划线开头。在另一个线程中详细讨论该警告:我不喜欢变量使用下划线。不需要在变量前面加下划线。使用
this
,您可以轻松引用和查找所有私有字段变量,而无需使用下划线。警告1 SA1309:字段名称不得以下划线开头。简写法将只读属性更改为read\writeIt,因为它标记为private,所以只能从类内部写入,而不能从外部写入。关闭FxCop IMO中的警告。为了对构造函数参数进行camelCased,类也必须进行camelCased。我不认为类名是用骆驼壳写的。警告1 SA1300:类名以大写字母开头:restartability.constructor参数,而不是构造函数的名称。构造函数只是与类同名的特殊方法。我专门谈论这些方法的参数。这不是一个坏主意,直到这个约定变得像在模块级变量前面加一个u一样流行,然后FxCop发现禁止这样做。Corerction:StyleCop已经开始关注你了。警告1 SA1310:字段名不得包含下划线。即(任何地方)就我个人而言,我从未使用过此软件。我会好好看看的!谢谢你的建议