1 命名规范
只能英文,禁止中文拼音,但是youku、alibaba可以
DO、VO、DTO、BO不需要驼峰
领域模型
表名 xxxDO
展示 xxxVO
业务 xxxBO
常量大写,_分割,不要嫌太长
抽象类必须用Abstract开头
包全部用小写,.分割符之间,只能有一个单词,不要用复数
com.changhong.util
使用设计模式的后面加模式类型
OrderFactory
LoginProxy
service服务层命令
Xxxservice -> XxxServiceImpl
形容能力的接口名
Xxxable -> XXXor
枚举类建议Enum后缀,成员名大写
service/dao层
获取单个 get/selectXxxx()
多个 listXxxx()
统计 countXxxx()
保存 save/insertXxxx()
批量加 batchSave/InsertXxxx()
删除 remove/deleteXxxx()
修改 updateXxxx()
2 申明类型规范
数组申明形式 int[]
3 常量规范
不予许任何魔法值,特别是常量;使用 XxxContents 维护常量
常量层次
跨应用共享常量 放到而方库 xxx.jar 中的constant,我们很少涉及
应用内共享常量 写到common组件中,常用的是Redis的prefix
组件内共享 写到组件内的constants
包内共享 写到包内constants
类共享 使用private static final 直接写到内中
4 赋值规范
Long对象赋值时,必须用大写L
5 枚举使用规范
一个变量只在一个固定范围内变化,使用enum,例如我们消息队列中使用的Type类型,适合使用enum
6 空格规范
If/for/while/switch/do 和括号之间必须有空格
任何二目和三目运算符之间必须有空格
括号:if (a == b)
禁止if不用大括号的if(a==b) System.out.println()
4个空格锁紧,一个tab必须4个空格
函数参数列表之间必须加空格
method(arg1, arg2, arg3)
7 比较规范
“ABC”.equals(object)
包装对象使用equals()比较,不使用==
例如 -128 至 127 是在cache 中产生,可以使用==比较,之外在堆中产生,==失效
POJO对象使用包装类型
远程调用返回值和请求参数使用包装类型
8 变量、参数规范
尽量不用可变参数 String... ids
局部变量使用int(建议)
9 POJO定义规范
POJO对象不要设置默认值,否则可能引起不同开发者的使用误差;例如时间createTime,都要显示的给出来
POJO都要重写toString,继承时候调用super.toString
POJO中的布尔类型变量不加is,可以if
class A{
Boolean ifDel
}
10 String使用规范
String的多次拼接,禁止 "a" + "b" + "c", 使用StringBuilder
11 比较规范
只要重写equals,就要重写hashCode
12 容器规范
容器容量初始化
initialCapacity =大于 (需要存储的元素个数 / 负载因子) + 1的2的最小倍数。注意负载因子(即 loader factor) 默认为 0.75, 如果暂时无法确定初始值大小,请设置为 16(即默认值)
13 单例模式
获取单例优先考虑使用srping @Bean
其次,枚举类
再次,静态内部类
14 线程创建
禁止使用Executors创建线程而是通过ThreadPoolExecutor创建线程
15 多线程中时间的处理
SimpleDateFormat线程不安全,不要定义成普通成员属性、static; 一定要定义则采用这种方式:
private static final ThreadLocal<DateFormat> df = new ThreadLocal<DateFormat>() {
@Override
protected DateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd");
}
};
使用JDK8,全部使用JDK8的时间处理
16 锁使用
如果每次访问冲突概率小于 20%,推荐使用乐观锁,否则使用悲观锁。乐观锁的重试次数不得小于 3 次
17 条件判断语句
swich 必须包含一个default,即是空
坚决反对写多层嵌套if-ifelse- else,使用卫语句优化
条件判断比较复杂时候,使用一个有意义的布尔变量来提高可读性
boolean existed = (file.open(fileName, "w") != null) && (...) || (...);
18 注释规范
类、类属性、类方法的注释必须使用 Javadoc 规范,使用/**内容*/格式
所有的抽象方法(包括接口中的方法) 必须要用 Javadoc 注释
所有的类都必须添加创建者和创建日期
方法内部单行// 多行/**/
其他
接口做到防备调用方,即请求参数必须检查,防止耗时的调用由于参数错误失败
坚决不是使用过时方法
构造器方法严禁逻辑业务、初始化逻辑,写到init()中