首页 > 其他分享 >两点之间直线最短,你写的是代码,我写的是艺术

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

时间:2022-10-25 12:35:25浏览次数:48  
标签:orderId 直线 PlatOrderService return selectByOrderId 最短 订单 两点 plat

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

 

✅ 两点之间直线最短

我在做代码走查的时候,发现一个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是平台订单号,字段上有唯一索引。
我在做代码走查的时候,发现一个service方法里有这么一个方法

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

 


为什么会有这么一个方法呢?据我分析:①是当事人不清楚orderId的作用;②当事人迷糊、马虎,未加思考未作了解就写出来的;③当事人参考其他service直接拿来主义。

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

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

 

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

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

 

 

✅ 待续

 

标签:orderId,直线,PlatOrderService,return,selectByOrderId,最短,订单,两点,plat
From: https://www.cnblogs.com/buguge/p/16824452.html

相关文章

  • 最短的桥
    题目给你一个大小为nxn的二元矩阵grid,其中1表示陆地,0表示水域。岛是由四面相连的1形成的一个最大组,即不会与非组内的任何其他1相连。grid中恰好存在两座岛......
  • BZOJ 1001([BeiJing2006]狼抓兔子-最大流转对偶图最短路)
    1001:[BeiJing2006]狼抓兔子TimeLimit: 15Sec  MemoryLimit: 162MBSubmit: 5779  Solved: 1297​​Submit​​][​​Status​​][​​Discuss​​]D......
  • BZOJ 1007(水平可见直线-斜率排序+栈贪心)
    1007:[HNOI2008]水平可见直线TimeLimit: 1Sec  MemoryLimit: 162MBSubmit: 1830  Solved: 656[​​Submit​​][​​Status​​][​​Discuss​​]......
  • 最短路问题
                   ......
  • 深度优先搜索求最短路径DFS C#实现
    搜索效果 C#项目文件可以点击下载   搜索最短路径的代码:///<summary>///DFS求最短路径///</summary>///<paramname="cX">当前点X坐标</param>///<par......
  • 最短路图
    对于点有点权的图\(g=\{v,e\}\),定义\(i\)到\(j\)的最短路径为所有\(i\)到\(j\)的路径中经过点权和。定义最短路图为\(G=\{V,E\}\),其中\(V\subseteqv,E\sub......
  • 最短路个人总结
    最短路(一)DijkstraDijkstra算法可求任一点到定点的最短路,适于有向图和无向图(对有向图有用的就一定对无向图有用),其边权不可为负(一条边都不行)。数组vis标记访问过的点,数组di......
  • windows系统下如何删除带有两点的文件夹
    情况说明:当文件夹末尾带点,或者带多个点的时候,删除文件夹会提示,文件夹不存在。以下方式,以删除文件夹路径为d:\osfipin\aaa..方式一:执行以下命令行代码mdd:\osfipin\aa......
  • C++课程设计《最短路径》
    C++课程设计《最短路径》课程设计《最短路径》课程设计题目:最短路径实验设计目的与要求:2.1目的:1)熟练应用C++的基本知识、技能。通过本课程设计,总结C++中抽象数据......
  • ac 853有边数限制的最短路
    #include<bits/stdc++.h>usingnamespacestd;constintN=510,M=10010;intn,m,k;intdist[N],backup[N];structEdge{inta,b,w;}edges[M];in......