背景
本文为 学习阿里开发规约的一些简单摘要,不是全部额,只是作为一种学习笔记的存在。
1、不要使用一个常量维护所有的常量,要按照常量功能分类,分开维护。
缓存相关的放在类 CacheConsts;系统配置相关的类放在 ConfigConsts
2、常量的复用层次
跨应用共享常量:放置在二方库中,通常位于 client.jar 中 constant 目录
应用内共享常量:放置在一方库中,通常是子模块的constant目录
子工程内部共享常量:当前子工程的constant目录
包内共享变量:当前包下单独constant目录
类内共享变量:直接类内部 private static fianl 定义
3、避免通过一个类的对象引用访问该类的静态变量或者静态方法,无谓增加编译器解析成本,直接用类名引用即可。
4、可变参数的使用,必须是相同类型参数,相同业务含义,才可以使用,避免使用object ,可变参数必须放在末尾,(不提倡可变参数编程)
5、应该使用常量或者确定有值的对象来调用equals
推荐使用 java.util.Objects#equals(JDK7 引入的工具类)。
6、所有整型包装类对象之间值的比较,全部使用equals方法比较。
所有整型包装类对象之间值的比较,全部使用 equals 方法比较。
说明:对于 Integer var = ? 在-128 至 127 范围内的赋值,Integer 对象是在 IntegerCache.cache 产
生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行判断,但是这个区间之外的所有数
据,都会在堆上产生,并不会复用已有对象,这是一个大坑,推荐使用 equals 方法进行判断。
7、关于基本数据类型和包装数据类型使用标准如下:
【强制】所有的 POJO 类属性必须使用包装数据类型。
【强制】RPC 方法的返回值和参数必须使用包装数据类型。
【推荐】所有的局部变量使用基本数据类型。
8、【强制】定义 DO/DTO/VO 等 POJO 类时,不要设定任何属性默认值。
POJO 类的 createTime 默认值为 new Date(),但是这个属性在数据提取时并没有置入具体值,在更新其它字段时又附带更新了此字段,导致创建时间被修改成当前时间。
【强制】构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,请放在 init 方法中。
【强制】POJO 类必须写 toString 方法。使用 IDE 中的工具:source> generate toString
时,如果继承了另一个 POJO 类,注意在前面加一下 super.toString。
2) 工具类不允许有 public 或 default 构造方法
[参考]分层异常处理规约
在 DAO 层,产生的异常类型有很多,无法用细粒度的异常进
行 catch,使用 catch(Exception e)方式,并 throw new DAOException(e),不需要打印日志,因为日志在 Manager/Service 层一定需要捕获并打印到日志文件中去,如果同台服务器再打日志,浪费性能和存储。
在 Service 层出现异常时,必须记录出错日志到磁盘,尽可能带上参数信息,相当于保护案发现场。如果 Manager 层与 Service 同机部署,日志方式与 DAO 层处理
一致,如果是单独部署,则采用与 Service 一致的处理方式。Web 层绝不应该继续往上抛异常,因为已经处于顶层,如果意识到这个异常将导致页面无法正常渲染,那么就应该直接跳转到友好错误页面,加上用户容易理解的错误提示信息。开放接口层要将异常处理成错误码和错误信息方式返回。
网友评论