随着需求迭代 ,团队代码量逐渐增多 ,熵增崭露头角 。临近月底 ,我打开部分程序 ,再做一次代码走查 。
✅ 两点之间直线最短
我在做代码走查的时候 ,发现一个service方法里有这么一段代码
先说一下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);
}
✅ 待续
声明:本站所有文章,如无特殊说明或标注 ,均为本站原创发布 。任何个人或组织 ,在未征得本站同意时,禁止复制 、盗用 、采集 、发布本站内容到任何网站 、书籍等各类媒体平台 。如若本站内容侵犯了原著者的合法权益 ,可联系我们进行处理。