码出好代码--小知识点

1. 接口过时必须加@Deprecated注解,并清晰的说明采用新接口或者新服务是什么。
2. Object的equals方法容易抛出NPE,应使用常量或确定有值的对象来调用equals。

推荐使用java.util.Objects.equals(Object, Object)。

3. 集合初始化,尽量指定集合初始值大小。

反例:HashMap放置1024个元素,随着元素不断增加,需要resize7次,严重影响性能。

4. 创建线程和线程池时请指定有意义的线程名称,方便出错时回溯。
5. SimpleDateFormat是线程不安全的,不要定义为static变量。

JDK8用DateTimeFormatter(This class is immutable and thread-safe)代替SimpleDateFormat。

6. 避免采用取反逻辑运算符,取反逻辑不利于快速理解。
7. 对trace/debug/info级别的日志输出,必须使用条件输出形式或者使用占位符的方式。
    if (log.isInfoEnabled()) {
        log.info("Processing trade with id:" + id + " and symbol:" + symbol);
    }
        
    log.info("Processing trade with id:{} and symbol:{}", id, symbol);

当日志级别为error时,这两种都不会执行字符串拼接操作和toString()方法,节省系统资源。在强调一点高并发系统线上千万不能有System.out.println()。

8. 返回零长度的数组或者集合,而不是null,也别传递null

简化代码空判断,防止NPE。

List<PromoIndex> promoIndexList = getBatchPromoStoresIndexs(promo, sku);
if (CollectionUtils.isNotEmpty(promoIndexList)) {
    for (PromoIndex index : promoIndexList) {
    
    }
}
9. 用枚举替代int常量
  • 与int常量相比,枚举要易读的多,也更加安全,功能更加强大。

  • 后面持续更新!!!

posted @ 2019-08-16 09:40 wudiffs 阅读(...) 评论(...) 编辑 收藏