一、编程规约
(一)命名风格
命名不能以_或$开始和结束
命名不能使用拼音或英文+拼音
命名使用驼峰式
常量使用大写和下划线
抽象类:以Abstract或Base开头,异常类:以Exception结尾,测试类:以要测试的类开头,以Test结尾
[]跟在String紧后
POJO类中,布尔型不加is
包名小写,点分隔符间有且仅有一个英文单词,单数
杜绝不规范的缩写
自定义元素,使用尽量完整的单词组合
若使用了设计模式,命名时体现出具体模式
接口的方法和属性不加任何修饰符
对于Service和DAO类,实现类用Impl后缀;如果时形容能力的接口名称,取对应的形容词(通常-able)作为接口名
枚举类,以Enum为后缀;枚举成员全大写和下划线;
各层命名规约:
- Service / DAO 层
获取单个对象:get前缀
获取多个对象:list前缀
统计:count前缀
插入:save / insert前缀
删除:remove / delete前缀
修改:update前缀 - 领域模型
数据对象:xxxDO,xxx为数据表名
数据传输对象:xxxDTO,xxx
展示对象:xxxVO,xxx
POJO时DO/DTO/BO/VO的统称,禁止命名为xxxPOJO
(二)常量定义
Long的L大写
常量归类,不许全部放入一个常量类中
常量有5层:跨应用共享常量、应用内共享常量、子工程内共享常量、包内共享常量、类内共享常量
跨应用共享常量:client.jar中constant下
应用内共想常量:modules中constant下
子工程内共享常量:当前子工程的constant下
包内共享常量:当前包下单独的constant下
类内共享常量:类内部private static final
枚举类
(三)代码格式
{}中间为空,且不换行
if {
…
}else {
…
}
(abc),括号内左右均无空格
if/for/while等保留字与括号之间有空格
二目、三目运算符左右均有空格
采用4个空格缩进,可以设置tab为4空格
//与内容之间有且仅有一个空格
单行字符不超过120个,否则换行:
- 第二行空4格,第三行与第二行同行
- 运算符、点符换下行
- 逗号,括号不换行
逗号后有空格
方法体内,不同逻辑间插入一行空行
(四)OOP规约
静态,类名访问
覆写方法必须加@Override
注解
可变参数(提倡也不用),避免使用Object
Object的equals容易抛空指针异常,应使用常量或确定有值的对象调用equals
所有相同类型的包装类对象之间值的比较,全部使用equals方法比较
所有的POJO类属性必须使用包装数据类型
RPC方法的返回值和参数必须使用包装类型
所有的局部变量使用基本数据类型
定义DO/DTO/VO等POJO类时,不要设定任何属性默认值
序列化
构造方法
toString()
split
公有、保护>私有>getter、setter