JAVA如何避免过多if判断

JAVA如何避免过多if判断

一. if里简单赋值

用三元或者Optional.orElse方法

//简化前
if(remark == null){
  remark = "无";
}
//三元
remark = remark ==null? "无": remark;
//Optional
remark = Optional.ofNullable(remark).orElse("无");

二. if里执行简单代码

Optional.filter.ifPresent方法

//简化前
if(uid < 1000){
  order.setRemark("压测订单"+uid);
}
//简化后
Optional.of(uid).filter(uid -> uid <1000).ifPresent(uid -> order.setRemark("压测订单"+uid));

三. if里抛出异常

用Assert断言(这里用Spring)和Optional, 推荐使用Assert断言

//简化前
if(payAmount < 0){
  throw new AppException("异常订单");
}
//简化后
Assert.isTrue(payAmount < 0,"异常订单");
Optional.of(payAmount).filter(e -> e > 0).orElseThrow(() -> new RuntimeException("error num"));

四. if里稍复杂赋值

Optional.filter.map.ifPresent.orElse等组合使用

//简化前
AddressContact matchedAddress= null;
if(!CollectionUtils.isEmpty()){
    for(AddressContact address: addresses){
      if(contactId.equals(address.getContactId())){
        matchedAddress = address;
        receiverInfo = address.getReceiverInfo();
      }
  	}
}
  
//简化后
Optional.ofNullable(addresses).filter(c -> !CollectionUtils.isEmpty(c))
  .map(c -> c.stream().filter(e -> contactId.equals(e.getContactId())).findFirst())
  .ifPresent(address -> {
    	matchedAddress = address;
    	receiverInfo = address.getReceiverInfo();
   });

五. if分支逻辑太多

  • 方法一: 利用多个if+return, 达到先初始的简化

(if+return很多目前没找到好的优化, 部分场景可以在调用方法判断不符合直接不调用, 不合理的if越在前面判断代价越小)

  • 方法二: 转换成switch或Map

如果不同的if类似于同一个场景的不同的值的判断, 可以定义枚举用switch或Map(初始化时添加所有case)


  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值