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; }
}
}
我认为私有字段变量应该以'_'为前缀。
这会给你:
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相同的令牌以获取有关此方面的更多信息。