代码规范主要从命名规范、布局规范、注释规范、代码使用规范四块来解释。
1). 含义,变量一般指局部变量、成员变量、全局变量以及方法中的参数,这些命名要具有
相对应的含义,一般使用需要的英文单词来表示,要满足Camel规则。
2). Camel规则, 名称中的第一个单词的首字母不能大写。
3). 注意, 一般在不知道返回的是什么类型的时候,一般会用弱类型(var)去接。
不能名称中的单词全部大写。
不能使用数字来区分变量。
不能使用缩写来代替变量名(除了URL\IO这样达成共识的,在循环中的)。
不给变量添加任何的前缀(除布尔类型(is/can)及私有和受保护的变量(“_”前缀))。
变量要声明在类的顶部,静态变量放在最前面。
常量所有单词大写,多个单词之间使用“_”连接。
2. 文件名、方法名、类名、接口命名规范
1). 含义, 文件名、方法名、类名也要有相对应的含义去命名,需要满足Pascal规则。
2). Pascal规则, 名称中的单词首字母大写。
3). 注意,文件名在分层项目中使用, 一定要在文件名称的最后加上层级名。
方法名一般会使用动宾短语,尽量减少使用get。
接口使用I作为前缀。
类名一般使用名词或者名词短语。
特殊类:抽象类,使用Abstract为前缀或者Base为后缀。
异常类,以Exception为后缀。
自定义类,以Attribute作为后缀。
3. 命名空间规范
1). 含义, 命名空间是为引用时做的一个标记。
2). Pascal规则, 名称中的单词首字母大写。
3). 注意, 一般使用“公司名称.技术名称”,或者使用”项目名称.技术名称”
不要使用下划线、连字符或任何其他非字母数字字符.
4. 委托和事件命名规范
1). 委托,以EventHandler作为后缀名。
2). 事件,以其对应的委托类型,去掉EventHandler后缀,添加On前缀。
1. 代码缩进
代码缩进4个空格(在方法中无参数,可在一行,有参数则将花括号独自占一行)
2. 代码换行
单行代码限制在120个字符,超长处理:
第二行相对第一行缩进4空格,从第三行开始保持和第二行一致。
运算符及方法调用“.”需要跟随换行,但逗号不需要。
3. 代码空行
1). 空两行
接口和类定义之间。
枚举和类定义之间。
类与类定义之间。
2). 空一行
方法与方法、属性与属性、属性与方法、属性与字段、方法与字段之间。
方法中变量声明和语句之间。
方法与方法之间。
方法中不同逻辑块之间。
方法中返回语句和其他语句之间。
注释与它注释的语句间不空行,但与其它的语句间空一行。
4. 代码空格
1). 关键字和左括符“(”
2). 方法名和左括符“(”不要使用。
3). 多个参数用逗号分隔,逗号后需要添加一个空格。
4). 除了“.”之外,所有二元操作符需要空格分开。
5). 一元操作符、++、--不能用空格分隔。
6). 语句表达式之间用空格分隔,常见于for, if 语句中。
5. 代码括号(花括号)
1). 在没有必要的时候,不要再返回语句中使用括号().
2). 左括符“(”和关键字空格。
3). 左括符“(”和方法名, 不添加空格。
4). 左花括号放在关键字或者方法名下一行,左右花括号对齐。
5). if、while、do语句后一定要使用{},即使{}号中为空或只有一条语句。
6). 右花括号 “}” 后建议加一个注释以便于方便的找到与之相应的 {。
///
/// 类的作用描述
///
public class Post
2. 属性和方法注释
///
/// 方法(属性)作用描述
///
/// 参数说明
///
public Post GetPostById(int id)
3. 代码单行注释
//this is a single line comment
4. 代码多行注释
/*
this is comment1
this is comment2
*/
1. 使用语言特性
1). this, 使用this区分类型中的属性,变量、静态成员。
2). var, 适当的使用可以提高开发效率,用在不知道返回的具体类型和不需要知道返回类型
2. 异常
1). 当程序出现与预期不符时应该抛出异常让程序上有处理。
2). 尽可能使用内置的异常类型。
3). 捕获异常必须处理。
4). 获取指定异常而非统一使用Exception.
5). 做测试时,在对应的方法或者函数内部直接抛出尽可能出现的异常,以供解决问题 。
3. 安全准则
1). 在代码中不要使用具体的路径,驱动名称,使用相对并保证复用。
2). 在代码中注意资源的释放。
3). 安全协议的使用(HTTP, HTTPClient )。
4. 字符串内插
字符串内插提高可读性