之前工作中整理的一篇编码规范

时间:2021-11-24 04:53:53

之前事情中整理的一篇编码规范。

代码注释 注释约定

只在需要的处所加注释,不要为显而易见的代码加
使用 /// 生成的xml标签格局的

要领注释

所有的要领都应该以描述这段代码的成果的一段简明注释开始(要领是干什么)。这种描述不应该包孕执行过程细节(它是怎么做的)

/// <summary> /// 把东西类型转化为指定类型 /// </summary> /// <typeparam>动态类型 </typeparam> /// <param>要转化的源东西 </param> /// <returns> 转化后的指定类型的东西,转化掉败引发异常。</returns> public static T CastTo<T>(this object value)

代码行注释

如果某一成果需要多行代码,并有多个逻辑布局,应在此代码前添加注释,说明此块代码的措置惩罚惩罚思路及注意事项等
注释重新行增加,与代码开始处左对齐
注释双斜线与注释之间以空格分隔,示例如下:

public void Dispose(){ // 如果连接已打开,则*连接并释放资源 if(this.connection.State == ConnectionState.Open ){ this.connection.Close(); this.connection.Dispose(); } }

变量注释

变量需添加注释,说明变量的用途
Class级变量使用 /// 生成的Xml标签格局的文档注释

/// <summary> /// 文档名称 /// </summary> public static string docName = "";

要领级的变量注释可以放在变量声明语句后,与上下行的注释左对齐,注释与代码间以 Tab 键分隔断绝分手

public void CreateDoc() { string docType = ""; //文档类型 string author = ""; //作者 DateTime createDate = DateTime.Now; //创建世界 }

定名规范 定名根基约定

PascalCasing:

包罗一个或多个单词,每个单词首字母大写,其余小写
使用范畴:定名空间、类、接口、要领、属性、事件、非私有字段、枚举值

namespace System.IO public static class Console public enum FileAccess

camelCasing:

包罗一个或多个单词,第一个单词首字母小写,其余单词首字母大写
使用范畴:要领参数、局部变量

public string GetName(int productId){ string productName = null; }

**_camelCasing:**

"_"+camelCasing的方法
使用范畴:私有字段

private string _productName;

UPPER_CAPS:

包罗多个单词,每个单词的所有字母大写,单词之间使用"_"连接
使用范畴:const常量

public const string DEFAULT_NAME = "default";

示例:

namespace ConsoleApp { public delegate void SalesOutEventHandler(); public class Product { public event SalesOutEventHandler OnSalesOut; public Product GetProductById(int productId) { return null; } private enum ProductType { } } }

标识符定名约定 类和接口

类的名字使用名词
制止使用单词缩写,除非是广为人知的,好比: HTTP , IO
接口以 I 字母开头
同一项目差别定名空间中的类,,定名制止反复

要领

第一个单词为动词
返回值为 bool 类型,则加 Is , Can , Try前缀

变量

尽量使用短而有意义的单词
单字符变量名一般用于生命周期非常短的变量,如 for , foreach 中递增变量可以被定名为 i
如果变量暗示调集,则变量名使用复数,如 RowsCount
定名控件使用匈牙利定名法,前缀遵循同一个
在带单位的值变量后加“_camelCasing”格局的单位,如: public void CreateCache(int cacheSize_mb)

类型成员摆列挨次

类型成员的摆列挨次自上而下依次为:

字段: 私有字段、受掩护字段
属性: 私有属性、受掩护属性、公有属性
事件: 私有事件、受掩护事件、公有事件
结构函数: 参数数量最少的结构函数,参数数量中等的结构函数,参数数量最多的结构函数
要领: 重载要领的摆列挨次与结构函数不异,从参数数量最少往下至参数最多

其他规范 代码长度

每行代码不宜过长,应在屏幕宽度之内,约为80-120个字符摆布。换行法则如下:

在逗号后换行
在操纵符后换行
在高层换行而不是在低层换行
换行后与上一行语句对齐

保举写法:

var n = a * b / (c - g + f) + 4 * z;

不保举写法:

var n = a * b / (c - g + f) + 4 * z;

要领行数

每个要领的有效代码行数(不包孕注释和空行)应连结在50行以内

空白

空行是为了将逻辑相关的代码分块,以便提高阅读性
在以下情况使用两个空行:

类声明和接口声明之间
两个类声明之间
枚举与类声明之间

在以下情况使用一个空行: