codestyle.md 3.7 KB
Newer Older
222000329甘佳欣's avatar
222000329甘佳欣 已提交
1
1、前端代码规范
222000329甘佳欣's avatar
222000329甘佳欣 已提交
2 3 4

https://github.com/ecomfe/spec

222000329甘佳欣's avatar
222000329甘佳欣 已提交
5
1.1 缩进与换行
222000329甘佳欣's avatar
222000329甘佳欣 已提交
6

222000329甘佳欣's avatar
222000329甘佳欣 已提交
7
使用 4 个空格做为一个缩进层级,不允许使用 2 个空格 或 tab 字符。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
8

222000329甘佳欣's avatar
222000329甘佳欣 已提交
9
1.2 命名
222000329甘佳欣's avatar
222000329甘佳欣 已提交
10

222000329甘佳欣's avatar
222000329甘佳欣 已提交
11
class 必须单词全字母小写,单词间以 - 分隔。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
12

222000329甘佳欣's avatar
222000329甘佳欣 已提交
13
class 必须代表相应模块或部件的内容或功能,不得以样式信息进行命名。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
14

222000329甘佳欣's avatar
222000329甘佳欣 已提交
15
元素 id 必须保证页面唯一。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
16

222000329甘佳欣's avatar
222000329甘佳欣 已提交
17
id 建议单词全字母小写,单词间以 - 分隔。同项目必须保持风格一致。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
18

222000329甘佳欣's avatar
222000329甘佳欣 已提交
19
id、class 命名,在避免冲突并描述清楚的前提下尽可能短。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
20

222000329甘佳欣's avatar
222000329甘佳欣 已提交
21
1.3 DOCTYPE
222000329甘佳欣's avatar
222000329甘佳欣 已提交
22

222000329甘佳欣's avatar
222000329甘佳欣 已提交
23
使用 HTML5 的 doctype 来启用标准模式,建议使用大写的 DOCTYPE。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
24

222000329甘佳欣's avatar
222000329甘佳欣 已提交
25
1.4 编码
222000329甘佳欣's avatar
222000329甘佳欣 已提交
26

222000329甘佳欣's avatar
222000329甘佳欣 已提交
27
页面必须使用精简形式,明确指定字符编码。指定字符编码的 meta 必须是 head 的第一个直接子元素。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
28

222000329甘佳欣's avatar
222000329甘佳欣 已提交
29
1.5 标签
222000329甘佳欣's avatar
222000329甘佳欣 已提交
30

222000329甘佳欣's avatar
222000329甘佳欣 已提交
31
标签名必须使用小写字母。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
32

222000329甘佳欣's avatar
222000329甘佳欣 已提交
33
对于无需自闭合的标签,不允许自闭合。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
34

222000329甘佳欣's avatar
222000329甘佳欣 已提交
35
标签使用必须符合标签嵌套规则。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
36

222000329甘佳欣's avatar
222000329甘佳欣 已提交
37
HTML 标签的使用应该遵循标签的语义。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
38

222000329甘佳欣's avatar
222000329甘佳欣 已提交
39
1.6 属性
222000329甘佳欣's avatar
222000329甘佳欣 已提交
40

222000329甘佳欣's avatar
222000329甘佳欣 已提交
41
属性名必须使用小写字母。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
42

222000329甘佳欣's avatar
222000329甘佳欣 已提交
43 44 45
属性值必须用双引号包围。

2、后端代码规范
222000329甘佳欣's avatar
222000329甘佳欣 已提交
46 47 48

https://github.com/alibaba/p3c

222000329甘佳欣's avatar
222000329甘佳欣 已提交
49
2.1 命名
222000329甘佳欣's avatar
222000329甘佳欣 已提交
50

222000329甘佳欣's avatar
222000329甘佳欣 已提交
51
代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
52

222000329甘佳欣's avatar
222000329甘佳欣 已提交
53
代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
54

222000329甘佳欣's avatar
222000329甘佳欣 已提交
55
方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从驼峰形式。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
56

222000329甘佳欣's avatar
222000329甘佳欣 已提交
57
常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
58

222000329甘佳欣's avatar
222000329甘佳欣 已提交
59
抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测试类命名以它要测试的类的名称开始,以 Test 结尾。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
60

222000329甘佳欣's avatar
222000329甘佳欣 已提交
61
POJO 类中布尔类型变量都不要加 is 前缀,否则部分框架解析会引起序列化错误。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
62

222000329甘佳欣's avatar
222000329甘佳欣 已提交
63
包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
64

222000329甘佳欣's avatar
222000329甘佳欣 已提交
65
2.2 代码格式
222000329甘佳欣's avatar
222000329甘佳欣 已提交
66

222000329甘佳欣's avatar
222000329甘佳欣 已提交
67
如果是大括号内为空,则简洁地写成{}即可,大括号中间无需换行和空格;如果是非空代码块则:
222000329甘佳欣's avatar
222000329甘佳欣 已提交
68

222000329甘佳欣's avatar
222000329甘佳欣 已提交
69
左大括号前不换行。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
70

222000329甘佳欣's avatar
222000329甘佳欣 已提交
71
左大括号后换行。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
72

222000329甘佳欣's avatar
222000329甘佳欣 已提交
73
右大括号前换行。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
74

222000329甘佳欣's avatar
222000329甘佳欣 已提交
75
右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
76

222000329甘佳欣's avatar
222000329甘佳欣 已提交
77
if/for/while/switch/do 等保留字与括号之间都必须加空格。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
78

222000329甘佳欣's avatar
222000329甘佳欣 已提交
79
采用 4 个空格缩进,禁止使用 tab 字符。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
80

222000329甘佳欣's avatar
222000329甘佳欣 已提交
81
注释的双斜线与注释内容之间有且仅有一个空格。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
82

222000329甘佳欣's avatar
222000329甘佳欣 已提交
83
2.3 OOP规约
222000329甘佳欣's avatar
222000329甘佳欣 已提交
84

222000329甘佳欣's avatar
222000329甘佳欣 已提交
85
避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
86

222000329甘佳欣's avatar
222000329甘佳欣 已提交
87
所有的覆写方法,必须加@Override 注解。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
88

222000329甘佳欣's avatar
222000329甘佳欣 已提交
89
所有整型包装类对象之间值的比较,全部使用 equals 方法比较。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
90

222000329甘佳欣's avatar
222000329甘佳欣 已提交
91
浮点数之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能用 equals 来判断。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
92

222000329甘佳欣's avatar
222000329甘佳欣 已提交
93
定义数据对象 DO 类时,属性类型要与数据库字段类型相匹配。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
94

222000329甘佳欣's avatar
222000329甘佳欣 已提交
95
2.4 控制语句
222000329甘佳欣's avatar
222000329甘佳欣 已提交
96

222000329甘佳欣's avatar
222000329甘佳欣 已提交
97
在一个 switch 块内,每个 case 要么通过 continue/break/return 等来终止,要么注释说明程序将继续执行到哪一个 case 为止;在一个 switch 块内,都必须包含一个 default 语句并且放在最后,即使它什么代码也没有。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
98

222000329甘佳欣's avatar
222000329甘佳欣 已提交
99
在 if/else/for/while/do 语句中必须使用大括号。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
100

222000329甘佳欣's avatar
222000329甘佳欣 已提交
101
2.5 注释规约
222000329甘佳欣's avatar
222000329甘佳欣 已提交
102

222000329甘佳欣's avatar
222000329甘佳欣 已提交
103
类、类属性、类方法的注释必须使用 Javadoc 规范,使用/*内容/格式,不得使用// xxx 方式。
222000329甘佳欣's avatar
222000329甘佳欣 已提交
104

222000329甘佳欣's avatar
222000329甘佳欣 已提交
105
所有的抽象方法(包括接口中的方法)必须要用 Javadoc 注释、除了返回值、参数、异常说明外,还必须指出该方法做什么事情,实现什么功能。