避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可
所有的覆写方法,必须加@override注解
相同参数类型,相同业务含义,才可以使用java的可变参数,避免使用object
接口过时必须加@Depercated注解,并清晰地说明采用的新接口或者新服务是什么
不能使用过时的类或方法
所有相同类型的包装类对象之间值得比较,全部使用equals方法比较.
对于Integer var=?在-128至127范围内的赋值,Integer对象是在IntegerCache.cache产生,会复用已有对象,
这个区间内的Integer值可以直接使用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,
推荐使用equals方法进行判断
基础数据类型和包装数据类型的使用标准
1.所有的POJO类属性必须使用包装数据类型
2.RPC方法的返回值和参数必须使用包装数据类型
3.所有的局部变量使用基本数据类型
POJO类属性没有初值是提醒使用者在需要使用时,必须自己显式地进行赋值,任何NPE问题,或者入库检查,都由使用者来保证
(定义POJO类 不要设定任何属性默认值)
序列化类新增属性时,请不要修改serialVersioUID字段,避免反序列失败;如果完全不兼容升级,避免反序列化混乱,那么请修改servialVersionUID的值(//TODO 序列化接口的原理)
构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,请放在init方法中
POJO类必须写toString方法,如果继承了另一个POJO类,注意加一下super.toString()
使用索引访问String的split方法得到的数组时,需做最后一个分隔符后有无内容的检查
重载方法按顺序放置在一起(优先级高) 类内方法定义的顺序 public protect>private>getter/setter
getter/setter方法中,不要增加业务逻辑(非常不方便review代码)
循环体内,字符串的连接方式,使用StringBuilder的append方法进行拓展
final关键字的使用场景
1.不允许被继承的类,如String类
2.不允许修改引用的域对象
3.不允许被重写的方法
4.不允许运行过程中重新赋值的局部变量
5.避免上下文重复使用一个变量,使用final可以强制重新定义一个变量,方便更好的重构
避免使用clone方法来拷贝对象(深克隆使用麻烦,谨慎使用)
类成员与方法访问控制从严(权限控制)
1.如果不允许外部直接new对象,构造方法必须是private
2.工具类不允许有public或default构造方法
3.类非static成员变量并且与子类共享,必须是protected
4.类成员变量如果仅在本类使用,必须是private
5.若是static成员变量,考虑是否为final;
6.成员方法只供类内部调用,必须是private
7.成员方法只对继承类公开,那么限制为protected
过于宽泛的访问范围,不利于模块解耦