微软官网文档:https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/
C# 代码规范整理:
1、 我们将_camelCase用于内部和私有字段,并在可能的情况下使用readonly。在内部和私有实例字段前面加上_,静态字段前面加上s_,线程静态字段前面加上t_。在静态字段上使用时,readonly应该放在static之后(例如,static readonly而不是readonly static)。公共字段应该谨慎使用,在使用时应该使用没有前缀的pascal大小写。
例子: private ObservableLinkedListNode<T> _head; private int _count;
2、 避免使用 this.
3、 我们总要指定可见性,即使它是默认的(例如private string _foo而不是string _foo)。可见性应该是第一个修饰词(例如public abstract而不是abstract public)。
4、 名称空间导入应该在文件的顶部指定,在名称空间声明之外,并且应该按字母顺序排序(System除外)。名称空间,它被放置在所有其他名称空间之上。
例子: using System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.ComponentModel; using System.Diagnostics; using Microsoft.Win32;
5、 避免在任何时候出现多个空行。例如,在类型成员之间不要有两个空行。
6、 避免虚假的自由空间。例如,避免if (someVar == 0)… 这个点标记着虚假的自由空间。考虑运用“查看空白(Ctrl+R, Ctrl+W)”或“编辑->高级->查看空白”,如果使用Visual Studio来帮助检测。
7、 如果一个文件的样式与这些准则不同(例如,私有成员被命名为m_member而不是_member),该文件中现有的样式优先。
8、 我们只在变量类型很明显的时候才使用var
(例如var stream = new FileStream(…) 而不是var stream = OpenStandardInput())。
9、 对于类型引用和方法调用,我们使用语言关键字来代替BCL类型
(例如int、string、float而不是Int32、string、Single等), 例如int. parse而不是Int32. parse)。
10、我们使用pascal大小写来命名所有的常量局部变量和字段。
The only exception is for interop code where the constant value should exactly match the name and value of the code you are calling via interop.
11、在可能的情况下,我们使用nameof(…)来代替“…”。
12、字段应该在类型声明的顶部指定。
13、在源代码中包含非ascii字符时,使用Unicode转义序列(uXXXX)代替文字字符。文本非ascii字符偶尔会被工具或编辑器曲解。
14、在使用标签(用于goto)时,将标签缩进比当前缩进小一个。
15、当使用单一语句if时,我们遵循以下约定:
不要使用单行形式
if (source == null) throw new ArgumentNullException("source");
总是接受使用大括号,如果if/else if/…/else复合语句使用大括号,或者单个语句主体跨多行。仅当与if/else if/…关联的每个块的主体时,才可以省略大括号。/else复合语句放在单行上。那还是 都展开好了;