一些代码优化的方法

空值的判断及处理

1、对数据源进行查询后,如果没有查到对应值,返回结果是null、还是一个空对象类型,如:

public interface UserSearchService{
  List<User> listUser();
  User get(Integer id);
}

2、listUser接口的实现

public List<User> listUser(){
    List<User> userList = userListRepostity.selectByExample(new UserExample());
    if(CollectionUtils.isEmpty(userList)){
      return Lists.newArrayList();//guava类库提供的方式
    }
    return userList;
}

返回为一个空list,而不应该是null
3、get接口的实现
如果查询没有结果,通过java.util.Optional设置默认值、或者返回一个自定义空对象、或者抛出异常

4、对对象的判空:

Preconditions.checkNotNull();
Preconditions.checkArgument();

CollectionUtils.isEmpty(Collection);

StringUtils.isEmpty(str)
Objects.nonNull(obj)

5、使用java8中的Optional来实现

 Optional.of(str).filter(str -> Pattern.matches(regex, str))
                .orElseThrow(() -> new IllegalArgumentException("str is illegal"));

打日志

1、使用参数化信息的方式,使用[]进行参数变量隔离,不要进行字符串拼接

logger.debug("Processing trade with id:[{}] and symbol : [{}] ", id, symbol);

2、对于debug日志,必须判断是否为debug级别后,才进行使用

if (logger.isDebugEnabled()) {
    logger.debug("Processing trade with id: " +id + " symbol: " + symbol);
}

异常

1、如果要抛出异常,就不必log.error把异常堆栈日志输出,而是在catch异常的地方输出
2、也可以通过使用Optional来实现来抛出异常

类、包命名

1、一个对象实体,所属的包名应该是com.xxx.entity,而不是domain
2、只要是用于网络传输的对象,我们都认为他们可以当做是DTO对象,所以名字应该为:XXXDTO

创建对象

1、使用BeanUtils.copyProperties(sourceBean,destinationBean);
2、使用lombok

建议:

guava包是一个非常好的工具包!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值