Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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#_Naming Conventions - Fatal编程技术网

C# 私有静态只读字段大小写

C# 私有静态只读字段大小写,c#,naming-conventions,C#,Naming Conventions,帕斯卡还是骆驼 我使用驼峰大小写命名私有字段和私有静态字段。我用pascal大小写命名常量(如MS命名约定所建议的)(无论私有还是公共) 那么私有静态只读呢?逻辑上说是驼峰式的……但私有静态只读在功能上类似于常量……对吗?不,私有静态只读本身根本不像常量。考虑: private static readonly IList<int> foo = new List<int>(); private static readonly IList foo=new List();

帕斯卡还是骆驼

我使用驼峰大小写命名私有字段和私有静态字段。我用pascal大小写命名常量(如MS命名约定所建议的)(无论私有还是公共)


那么私有静态只读呢?逻辑上说是驼峰式的……但私有静态只读在功能上类似于常量……对吗?

不,
私有静态只读本身根本不像
常量。考虑:

private static readonly IList<int> foo = new List<int>();
private static readonly IList foo=new List();
您仍然可以执行
foo.Add(0)。只有当对象本身以及任何引用的对象都是不可变的时,这些字段才是常量

字段名中一定要使用Pascal大小写

字段的命名准则适用于静态公共字段和受保护字段。不应定义公共或受保护的实例字段

只读静态字段=帕斯卡

一般规则:

IDENTIFIER CASE EXAMPLE ----------------------+-----------+--------------- Class Pascal AppDomain Enumeration types Pascal ErrorLevel Enumeration values Pascal FatalError Event Pascal ValueChanged Exception class Pascal WebException Read-only static field Pascal RedValue Interface Pascal IDisposable Method Pascal ToString Namespace Pascal System.Drawing Parameter Camel typeName Property Pascal BackColor 对于所有公共设备,请务必使用Pascal外壳 成员、类型和命名空间名称 由多个单词组成

请注意,此规则不适用于 实例字段。原因是 在构件设计中详细说明 准则,您不应使用公共 实例字段。

对于参数,请务必使用驼峰形外壳 名字

完整列表:

IDENTIFIER CASE EXAMPLE ----------------------+-----------+--------------- Class Pascal AppDomain Enumeration types Pascal ErrorLevel Enumeration values Pascal FatalError Event Pascal ValueChanged Exception class Pascal WebException Read-only static field Pascal RedValue Interface Pascal IDisposable Method Pascal ToString Namespace Pascal System.Drawing Parameter Camel typeName Property Pascal BackColor 标识符案例示例 ----------------------+-----------+--------------- 类Pascal AppDomain 枚举类型Pascal ErrorLevel 枚举值Pascal FatalError 事件Pascal值已更改 异常类Pascal WebException 只读静态字段Pascal RedValue 接口Pascal IDisposable 方法Pascal-ToString 名称空间Pascal System.Drawing 参数Camel typeName 属性Pascal背景色

也考虑


我不会担心与其他人的约定相匹配——只要你使用的命名约定与你的一致,你选择做什么并不重要。还有更重要的事情要担心。

我在StyleCop中得到一个警告:

    private readonly Color LabelBackColor = Color.Black;
警告364 SA1306:CSharp.命名:变量名和专用字段名必须以小写字母开头:LabelBackColor


请参阅:专用只读字段应以小写字符开头。这意味着驼峰案例。

这里是一个示例参考源。有趣的是,微软在这里使用下划线作为私有字段,camelCase(无下划线)作为私有静态只读字段。但第二个示例也显示,Microsoft没有自己的字段命名标准:

为什么您认为它像常量?因为在使用中,私有静态只读与cosnt相同:设置一次,不能更改,静态范围。我意识到const有一个完全不同的实现(正在编译和解释等等)。不,它不像const:但是你不能重新分配私有静态readonly的值……那么你认为私有静态readonly使用camel case吗?@sotn谢天谢地,我们生活在一个有自由意志的宇宙中,不必遵循毫无意义的武断规则。@cdhowie不是我的宇宙。无论是否随意,严格遵循样式规则(无论您是否喜欢其中的某些规则)有助于代码的标准化及其维护。@如果您已经做出了决定,请确定。然而,这种特殊的样式规则从表面上看毫无意义(使私有字段看起来像公共字段是有益的相反),我强烈反对在任何有权这样做的地方使用它。@O.R.Mapper根据StyleCop,它应该是相同的。虽然我不确定StyleCop的Analyzer包是这样运行的,还是真的是那样不合逻辑的规则。我对此很恼火,忍不住抑制了对私有成员的警告,并一直使用小写。此列表根本不包括私有成员或非只读和静态字段。此列表显示的情况正好相反。这里列出的唯一一个范围明显受限的参数是parameter。这就是为什么它是骆驼。该链接将您带到“大写约定”,其中确实提到Pascal适用于公共成员。@cdhowie:这一点很好,我已经更新了我的答案,以涵盖公共字段和静态字段。字段命名约定:我有一个专用的静态只读字段+公共getter。不知道该怎么做,名称与此约定冲突(以及ReSharper上默认提供的约定)。但是,让其他人为您做出这些决定很方便,因为它们是相当无关紧要的。遵循标准约定很重要。想象一下,如果你转到一个新项目,并且必须学会遵守与你格格不入的惯例。想象一下,尝试合并具有与项目约定相反约定的第三方库。想象一下,一名新员工进来,试图应对您的内部专有惯例标准。我完全不同意这个答案——相反,遵循行业公认的标准化惯例是非常重要的。不要因为懒得按正确的方式查找而重新发明轮子。标准约定有点像神话。问题是关于私有静态只读字段,而不是实例字段。StyleCop建议静态只读字段以大写字母开头,根据GitHub页面上的说明。