Java 编程规范

命名风格

常量定义

代码格式

集合处理

集合类 Key Value Super 说明
Hashtable 禁止为 null 禁止为 null Dictionary 线程安全
ConcurrentHashMap 禁止为 null 禁止为 null AbstractMap 锁分段技术(JDK8:CAS)
TreeMap 禁止为 null 允许为 null AbstractMap 线程不安全
HashMap 允许为 null 允许为 null AbstractMap 线程不安全

反例: 由于 HashMap 的干扰,很多人认为 ConcurrentHashMap 是可以置入 null 值,而事实上,存储 null 值时会抛出 NPE 异常。

并发处理

控制语句

下列情形,需要进行参数校验:
- 调用频次低的方法。
- 执行时间开销很大的方法。此情形中,参数校验时间几乎可以忽略不计,但如果因为参数错误导致中间执行回退,或者错误,那得不偿失。
- 需要极高稳定性和可用性的方法。
- 对外提供的开放接口,不管是 RPC/API/HTTP 接口。
- 敏感权限入口。

下列情形,不需要进行参数校验:
- 极有可能被循环调用的方法。但在方法说明里必须注明外部参数检查要求。
- 底层调用频度比较高的方法。毕竟是像纯净水过滤的最后一道,参数错误不太可能到底层才会暴露问题。一般 DAO 层与 Service
- 层都在同一个应用中,部署在同一台服务器中,所以 DAO 的参数校验,可以省略。
- 被声明成 private
- 只会被自己代码所调用的方法,如果能够确定调用方法的代码传入参数已经做过检查或者肯定不会有问题,此时可以不校验参数。

注释规约

异常日志

异常处理

整洁代码

整洁代码的建议列表