關於提高程式碼可維護性的一點思考

ZShUn發表於2019-01-28

為什麼需要提高程式碼的可維護性

​ 因為在平時開發專案過程中,因為專案工期緊、需求變化頻繁等等原因,然後導致程式碼混亂、service臃腫,最後導致維護成本高維護人員怨聲載道,最壞結果可能需要重構。

如何提高程式碼可維護性

  • 開發之前建模

    ​ 寫程式碼之前最好建模,把整個業務流程清晰在圖形當中展示,以便自己加深對業務的理解同時對整個業務程式碼的掌控。

  • 合理的歸類

    ​ 為什麼需要合理的歸類,大多數我們都只開發entity,dao,service,controller等四層,那麼這樣會隨著專案不斷的迭代導致類太臃腫。

    ​ 那麼我們就需要在這四層的基礎上再豐富一些。

    ​ 例如:

    ​ 1.加入job任務包

    ​ 2.加入utils工具類包

    ​ 3.加入handler處理器

    ​ 以上歸類只是給大家提供一點思路,具體業務場景還需分析。其實這些在一些優秀的開源專案當中都有體現。大家只需要看看學習理解,然後照搬過來即可。這也是為什麼需要看原始碼的原因,個人覺得看原始碼不緊緊是熟悉整個執行過程有助於排查問題過程。更重要的是學習裡面的設計思路。

  • 合理的引入一些設計模式

    ​ 設計模式是老生常談的話題了,面試當中也會問。那麼問題來了在什麼時候引入設計模式呢?

    ​ 舉個例子:

    ​ 假設我們在開發一個訂單功能,此時需要建立一個訂單,建立好訂單後需要給使用者傳送簡訊啊一系列操作。

    ​ 常規開發可能就是在一個方法裡面或者在一個service裡面拆幾個小方法搞定了。

    ​ 其實在這個場景我推薦大家使用事件機制也就是觀察者模式去實現,為什麼?本身客戶端是發起建立訂單的操作,傳送簡訊的等操作其實在這個時候和訂單沒關係,是在產生訂單後的操作。如果大家有用spring,那麼可以借用spring已經實現的來實現。

    @Service
    public class PaymentOrderServiceImpl implements PaymentOrderService {
        
        @Autowired
        private ApplicationEventPublisher applicationEventPublisher;
     
        public PaymentOrder createOrder(PaymentOrder paymentOrder){
            //完成建立訂單後發起事件
            applicationEventPublisher.publishEvent(new PaymentOrderEvent(paymentOrder));
            return paymentOrder;
        }
    }
    複製程式碼

    ​ 根據上面的程式碼,我們只需要自行實現監聽器,然後就可以完成建立訂單後的業務操作。這樣就達到了一個解耦的效果。會不會更好?

相關文章