精细结构

目录

通用编码规范

1. 必须要有缩进,且使用 tab 缩进,不要用空格或手动缩进,喜欢 2 空格、4 空格,还是别的,交给 IDE 去自定义; 2. 必须要用编辑器的代码格式化功能对代码进行格式化之后才能提交; 3. 除了 returnnullboolean 和抛异常外,所有 ifelse 等操作全部要加大括号,如:

 if (condition()) return;       √
 if (condition()) return true;  √

 if (condition()) nextStep();   X
 if (condition()) {             √
  nextStep(); 
 }

4. 除非有特殊需求,不要使用 switch 贯穿 ,要使用 switch 贯穿 时,必须申报理由

5. 所有命名空间、类、方法、变量名都尽量采用英语,而不要用汉语拼音;

6. 命名空间名、包名、文件夹名,全部采用小写字母,有多个词时用下划线连接,如:demo_namespace

7. 模块名、类名等采用驼峰命名,整体词性为名词,并且首字母大写,如:ThisIsDemo

8. 函数名、方法名等整体词性为动词,并且首字母小写,如:getSomething()

9. 代码中要有一定量的注释,但不要满篇废话,尽量做到自注释,具体的注释规范参考:代码注释规范

10. 不要使用魔法数字,而采用统一信息编码,具体信息编码参考:信息编码表

11. 拼写可以用缩写的地方就用缩写,不要太长,缩写对应表参考:缩写对应表

12. 尽量不要用 switch case 来描述可扩展的业务逻辑,通过依赖注入等其他方式来实现替代;

13. 所有大括号在换行时,一律不要在最前,写在行最后,如:

 if (condition())               X
 {              
  nextStep();
 }

 if (condition()) {             √
  nextStep(); 
 }

14. 代码中不要出现两个效果、功能完全一致的库,比如 moment 库和 dayjs 库;

15. 同样的功能,代码形式要完全一致,如:

const str1 = Vue.ls.get("NAME");
const str2 = this.$ls.get("NAME");     X

const str = Vue.ls.get("NAME");        √

16. 基础业务的框架性代码,要尽量常量化,比如全国的省市行政区划等;

17. 具体的业务性代码和基础业务的框架性代码要分开处理,不得混杂在一起;

18. 所有时间全用毫秒级时间戳来表达,禁止使用任何原生的时间类型格式;

19. 所有关于时间统一律采用毫秒级的时间戳,以 JS 为例是:Date.getTime()Date.now()

缩写对应表

全称 缩写
absolute abso
array arr
attribute attr
business biz
check chk
copy cpy
control ctl / ctrl
controller ctlr / ctrler
expand epd
extend ext
flag flg
implement impl
list lst
move mv
object obj
property prop
string str
temp tmp
template tmpl
text txt
value val