隨著需求迭代,團隊代碼量逐漸增多,熵增嶄露頭角,臨近月底,我打開部分程式,再做一次代碼走查,
? 兩點之間直線最短
我在做代碼走查的時候,發現一個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
<style>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))}</style>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/519230.html
標籤:Java
