百木园-与人分享,
就是让自己快乐。

两点之间直线最短,你写的是代码,我写的是艺术

随着需求迭代,团队代码量逐渐增多,熵增崭露头角。临近月底,我打开部分程序,再做一次代码走查。

 

✅ 两点之间直线最短

我在做代码走查的时候,发现一个service方法里有这么一段代码

    List<PlatOrder> platOrderList = platOrderService.selectByOrderIds(Lists.newArrayList(bankOrder.getOrderId()));
    if (CollectionUtils.isEmpty(platOrderList)) {
        throw BizException.build(\"服务商未落单\");
    }

    paymentReq.setOrigTransNo(platOrderList.get(0).getMerOrderId());

 

先说一下PlatOrder对应的数据表plat_order,plat_order是平台付款订单表,orderId是平台订单号,字段上有唯一索引。
我看这段逻辑,直觉是为什么调用 PlatOrderService#selectByOrderIds 方法获取一个列表,然后再取第一个元素呢? 绕这么一个弯儿干啥,殊不知两点之间直线最短。我赶紧翻一下 PlatOrderService 的方法列表。 发现果然有另一个方法 selectByOrderId 。那么,这里调用 selectByOrderId ,像下面这样,是不是更优雅?

    PlatOrder platOrder = platOrderService.selectByOrderId(bankOrder.getOrderId());
    Assert.notNull(platOrder, \"服务商未落单\");

    paymentReq.setOrigTransNo(platOrder.getMerOrderId());

 

 

✅ 世上无易事,用心求精进

PlatOrderService 是基于 plat_order表的CRUD操作的service接口类。先说一下plat_order表,plat_order是平台付款订单表,orderId是平台订单号,字段上有唯一索引。
我在做代码走查的时候,发现 PlatOrderService 里有这么一个方法

public interface PlatOrderService {
    
    /**
     * 根据订单流水号查询单条平台订单记录
     * @param orderId
     * @return
     */
    List<PlatOrder> selecPlatOrderByOrderId(String orderId);
}

 

为什么会有这么一个方法呢?据我分析:①是当事人不清楚orderId的作用;②当事人迷糊、马虎,未加思考未作了解就写出来的;③当事人参考其他service如法炮制、信手拈来;④年久失修。

我不能再容忍这样的方法继续被使用。
因此,改成这样:

public interface PlatOrderService {
    
    /**
     * 根据订单流水号查询单条平台订单记录
     * @param orderId
     * @return
     */
    default PlatOrder selectByOrderId(String orderId){
        List<PlatOrder> list = selecPlatOrderByOrderId(orderId);
        if (CollectionUtils.isNotEmpty(list)) return list.get(0);
        return null;
    }
    
    /**
     * 根据订单流水号查询单条平台订单记录
     * 不要再调用这个方法了,请使用{@link #selectByOrderId(String)}
     * @param orderId
     * @return
     */
    @Deprecated
    List<PlatOrder> selecPlatOrderByOrderId(String orderId);
}

 

某天深夜,我突然一想,我的正确姿势,应该是直接删掉这个方法,斩草要除根。上班后,立即行动。快刀斩乱麻,相关调用一并改掉。

public interface PlatOrderService {
    
    /**
     * 根据订单流水号查询单条平台订单记录
     * @param orderId
     * @return
     */
    PlatOrder selectByOrderId(String orderId);
}

 

 

✅ 待续

 


当看到一些不好的代码时,会发现我还算优秀;当看到优秀的代码时,也才意识到持续学习的重要!--buguge
本文来自博客园,转载请注明原文链接:https://www.cnblogs.com/buguge/p/16824452.html


hr.signhr{width:80%;margin:0 auto;border: 0;height: 4px;background-image: linear-gradient(to right, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.75), rgba(0, 0, 0, 0))}


来源:https://www.cnblogs.com/buguge/p/16824452.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » 两点之间直线最短,你写的是代码,我写的是艺术

相关推荐

  • 暂无文章