# 项目进阶规范
本规范指定了一些判断和实施难度较高的规范要求,项目成员应当根据自己的能力尽力达成本规范所要求的内容。在阅读本规范前,应先阅读并牢记[项目基本规范](./README.md)

## 一、注释规范
规范注释是规范代码的第一步,写不好注释的人,就算技术能力再怎么高,也难以适应团队化开发

### 1、注释的基本使用
1. 多行注释:多行注释通常用于对整个代码文件进行说明,或是在重要的函数和数据结构前对其进行详细说明。多行注释有规定格式的,应当按照规定格式来编写
2. 单行注释:单行注释应用于绝大部分场合,包括对函数的进行说明,对接下来的代码进行说明,或者用于做特定的标记等
3. 代码后注释:指和代码在同一行,并在代码后的单行注释。代码后注释通常用于对变量进行说明,或者对本行内容进行补充性说明
在项目中,只允许使用以下几种注释格式之一
4. 代码中注释:指和代码在同一行,并且不在代码后的注释。除了用于占位以外,应尽量避免使用代码中注释
5. TODO标记:可以应用在任何代码注释中,并且标记在注释的最前方。TODO标记用于占位,提示开发者应当在该位置做的事情。在由于某些原因无法直接完成全部代码,或者为了赶时间暂时提交了临时使用的代码的时候。就可以用TODO标记来占位,一个典型的带有TODO标记的注释:// TODO:这里有漏洞,需要修改

### 2、应当使用注释的地方
1. [项目基本规范](./README.md)里规定了必须要使用注释的地方
2. 对全局变量和其他使用范围较大,并且变量名不能做到一目了然的变量,应当使用代码后注释
3. 函数内部分为多个代码块的时候,对无法一眼看懂的代码块应当添加对应注释
4. 代码中需要提醒开发者和维护者注意的地方,应当添加注释
5. 对比较复杂的表达式或者逻辑判断,建议添加注释

### 3、不应该使用注释的地方
1. 注释内容过多,规模过大的,应当单独建立文档进行说明,而不是作为注释放在代码文件中
2. 添加了注释之后对于阅读代码没有任何帮助的注释,不建议添加
3. 连续而琐碎的注释会影响阅读代码时的流畅性,如果连续而琐碎的注释太多,建议整理好之后放在一个语句块的前面

### 4、注意事项
1. 注释内容应当尽可能的清晰明确,避免使用函数不清的字句
2. 注释必须和代码保持同步,修改代码之后应当重新确认一下注释,并根据具体情况修改注释

## 二、代码规范

### 1、基本要求
1. 除非没有更好的替代方案,否则禁止使用全局变量
2. 对其他文件的引用,以及变量声明。尽可能的统一放在对应代码块和代码文件的头部统一管理
3. 在同一个项目内应当使用严格统一的语法来编写代码

### 2、代码分块
1. 在代码中,应该适当的使用空行来对代码进行分块
2. 在代码块中,代码的功能应当清晰明确,不能把不同的代码逻辑混在一起交替执行
3. 代码块不宜过长,通常一个代码块应当限制在10个语句之内
4. 业务复杂并且需要大量调用其他函数的来完成业务的单个函数内,应尽量将对外调用整合起来,以尽可能的避免一行一个代码块的情况出现

### 3、代码通用性
1. 数据和代码逻辑应当分离,尽可能避免在代码逻辑中使用写死的数据
2. 适当的使用中间数据,可以极大的提升模块的独立性,并减少对其他模块的依赖
3. 当进行单个模块开发的时候,尽量避免将依赖关系混入到模块逻辑中

# 文档修订记录
* 2019/9/5:初版