NO IMAGE

今天工作中有一個需求是給具體的客戶贈送現金券,一次贈送6個月,每個月贈送的金額相同,贈送介面在專案中已經存在,重點在於業務邏輯的code。

具體的客戶指代滿足一定條件的客戶,然後贈送現金券,而贈送介面需要大量的引數,所以拼接引數就歸屬到業務邏輯,而非功能邏輯。

原先設計方法:

在業務方法A中,先找到滿足條件的客戶,然後呼叫一個可以說是業務方法B,在業務方法B中進行拼接引數(迴圈次數寫死,多次呼叫贈送介面);不適用每個月單獨贈送不固定金額的現金券,需要修改方法A,B等大量程式碼。

優化後設計方法:

將業務方法B優化,僅僅負責業務方法A滿足一定條件贈送現金券後傳遞引數到方法B中,方法B負責拼接傳遞過來的引數並呼叫贈送介面,不負責原來的贈送幾次,僅僅負責贈送。(一個方法只做一個功能)

在晨會時經過討論改成優化後的設計方法,讓一個方法僅僅只做一件事情(設計模式:單一職責);業務邏輯和功能邏輯分開。

原先設計方法中在方法B中進行多次拼接引數並多次呼叫贈送介面,是將一部分業務和功能揉合在一起,不符合單一職責原則;優化後,方法B僅僅接收引數,封裝引數並呼叫贈送介面即可,至於呼叫贈送介面幾次完全由業務方法A來進行控制;

優化後方法可以適應每個月不固定金額值,只需要修改方法A中的業務呼叫即可。

封裝可以提高程式碼複用,但是要和具體的業務結合起來(儘量職責分離)!

時間:2017-03-27

地點:杭州市