(1)常量命名全部大写,单词间用下划线隔开。
(2)抽象类命名以Abstract或Base开头;异常类命名以Exception结尾;测试类命名以它要测试的类名开始,以Test结尾。
(3)类型与中括号之间无空格定义数组(例:String[] args)。
(4)Boolean类型的变量不要加is前缀(例:Boolean isDeleted,它的方法名称也是isDeleted(),会造成部分框架解析失败)。
(5)包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词(例:com.pajk.util),统一使用单数形式。
(6)接口类中的方法和属性不要加任何修饰符(public也不要加,例:void commit()),尽量不要在接口里定义变量,如果一定要定义,必须是与接口方法相关的,并且是整个应用的基础常量。
(7)枚举类成员名称需要全部大写,单词间用下划线隔开(枚举就是特殊的常量类,且构造方法被默认强制为私有)。
(8)不允许任何魔法值(即没有预先定义的常量)出现在代码中(例:String key = "pajk")。
(9)long或者Long初始化时,使用大写的L,因为小写的容易跟数字1混淆。
(10)相同参数类型,相同业务含义,才可以使用可变参数。
(11)不能使用过时的类或方法,过时的接口必须加@Deprecated注解,并清晰的说明新接口是什么。
(12)Object的equals方法容易抛NPE异常,JDK7建议使用java.util.Objects#equlas方法。
(13)所有包装类型对象之间的比较,全部使用equals方法,不要用==判断。
(14)POJO类属性必须使用包装数据类型,RPC方法的返回值和参数必须使用包装数据类型(防止NPE异常),所有的局部变量使用基本数据类型。
(15)在定义DO/DTO/VO等POJO类时,不要设定任何属性默认值。
(16)POJO类必须写toString方法。IDE中工具 source-generate toString时,如果继承了另一个POJO类,注意在前面加一下super.toString。
(17)类内推荐的方法定义顺序:public > private > getter / setter 方法。
(18)getter / setter 方法中不要增加业务逻辑,否则会增加排查问题的难度。
(19)对象的clone方法是浅拷贝,若想实现深拷贝,需要重写clone方法来实现属性对象的拷贝。
(20)对任何类、方法、参数和变量,严控访问范围,过于宽泛的访问范围,不利于模块解耦(例:如果是一个private方法,想删除很简单,public则要考虑很多东西)。