3.1 命名规范
1、命名符合本语言特性
2、命名体现代码元素特征
推荐在Java命名时,以下列方式体现元素特征:
- 包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,则可使用复数形式
- 抽象类命名使用Abstract或Base开头;异常类命名使用Exception结尾;测试类名以它要测试的类名开始,以Test结尾
- 类型与中括号紧密相连来定义数组
- 枚举类名带上Enum后缀,枚举成员名称需要大写,单词之间用下划线隔开
3、命名最好望文知义
3.1.1 常量
常量是在作用域内保持不变的值,一般用final关键字进行修饰,根据作用域区分,分为全局常量、类内常量、局部常量。
3.1.2 变量
从广义上说,在程序中变量是一切通过分配内存并赋值的量,分为不可变量和可变常量。从狭义上说,变量仅指在程序运行过程中可以改变其值的量,包括成员变量和局部可变变量等。
3.2 代码展示风格
3.2.1 缩进、空格与空行
1、缩进
缩进表示层次对应关系。
2、空格
空格用于分割不同的编程元素。
空格的使用有如下约定:
- 任何二目、三目运算符的左右两边都必须加一个空格
- 注释的双斜线与注释内容之间有且仅有一个空格
- 方法参数在定义和传入时,多个参数逗号后边必须加空格
- 没有必要增加若干空格使变量的赋值等号与上一行对应位置的等号对齐
- 如果大括号内为空,则简洁地写成
{}即可,大括号中间无需空格和换行 - 左右小括号与括号内部的相邻字符之间不要出现空格
- 左大括号前需要加空格
3、空行
空行用来分隔功能相似、逻辑内聚、意思相近的代码片段,使得程序布局更加清晰。
3.2.2 换行和高度
1、换行
约定单行字符数不超过120个。换行时遵循如下原则:
- 第二行相对第一行缩进4个空格,从第三行开始,不再继续缩进
- 运算符与下文一起换行
- 方法调用的点符号与下文一起换行
- 方法调用中的多个参数需要换行时,在逗号后换行
- 在括号前不要换行
2、方法行数限制
约定单个方法的总行数不要超过80行。
3.2.3 控制语句
控制语句必须遵循如下约定:
- 在if、else、for、while、do-while等语句中必须使用大括号
- 在条件表达式中不允许有赋值操作,也不允许在判断表达式中出现复杂的逻辑语句
- 多层嵌套不能超过3层
- 避免使用取反逻辑运算符
3.3 代码注释
3.3.1 注释三要素
1、Nothing is strange
2、Less is more
3、Advance with the times
3.3.2 注释格式
1、Javadoc格式
枚举的注释是必须的,因为:
- 枚举实在太特殊了,它的代码极为稳定
- 注释的内容不仅限于解释属性值的含义,还可以包括注意事项、业务逻辑
- 枚举类的删除或者修改都存在很大的风险