POJO 类中布尔类型的变量,都不要加 is 前缀 ,否则部分框架解析会引起序列化错误。
反例:定义为基本数据类型 Boolean isDeleted; 的属性,它的方法也是 isDeleted() , RPC
阿里巴巴 Java 开发手册
2/36
框架在反向解析的时候,“误以为”对应的属性名称是 deleted ,导致属性获取不到,进而抛
出异常。
枚举类名建议带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。
说明:枚举其实就是特殊的常量类,且构造方法被默认强制是私有。
正例:枚举名字为 ProcessStatusEnum 的 成员名称: SUCCESS / UNKNOWN _ REASON 。
不允许任何魔法值 ( 即未经预先定义的常量 ) 直接出现在代码中。
反例: String key = " Id # taobao _" + tradeId;
cache . put(key , value);
注释的双斜线与注释内容之间有且仅有一个空格。
正例:
// 这是示例注释,请注意在双斜线之后有一个空格
String ygb = new String();
创建线程或线程池时请指定有意义的线程名称,方便出错时回溯。
正例:
public class TimerTaskThread extends Thread {
public TimerTaskThread() {
super.setName("TimerTaskThread");
...
}
使用 CountDownLatch 进行异步转同步操作
使用 CountDownLatch 进行异步转同步操作,每个线程退出前必须调用 countDown
方法,线程执行代码注意 catch 异常,确保 countDown 方法被执行到,避免主线程无法执行
至 await 方法,直到超时才返回结果。
说明:注意,子线程抛出异常堆栈,不能在主线程 try - catch 到。
在高并发场景中,避免使用”等于”判断作为中断或退出的条件
说明:如果并发控制没有处理好,容易产生等值判断被“击穿”的情况,使用大于或小于的区间
判断条件来代替。
反例:判断剩余奖品数量等于 0 时,终止发放奖品,但因为并发处理错误导致奖品数量瞬间变
成了负数,这样的话,活动无法终止。