如何重構乙個系統

2021-06-27 18:26:52 字數 1120 閱讀 2128

發現乙個很有意思的情況,做系統寫**多年了,遇到的需求基本上是在已有的系統上實現,從頭來實現的系統基本上沒有。

無論是從頭是實現乙個系統,還是維護乙個系統,當時實現的技術可能是最先進的、規劃的產品邏輯是合理的,隨著時間的發展、開發人員的變更、系統的**質量會逐漸腐化,加個feature太麻煩,改個bug涉及模組太多-沒有單測不敢隨便解,業務方抱怨技術團隊響應太慢。是時候重構系統了。

對於技術團隊來說,重構能力影響著系統對業務團隊的響應速度。很多職位招聘的時候都要求:

● 對已有系統進行重構和優化;

● 對元件的重用、重構有豐富的經驗;

● 能夠熟練運用各種重構方法;

● 察覺實現問題,提出改進(重構)方案;

● 對框架本身的體系有較為深厚的理解和應用經驗,對框架本身有過開發或重構者可優先考慮

……擁有重構能力的技術人員在個人價值方面也有很大的競爭力(^o^)/~

重構系統的時候,技術人員應該考慮對遺留**、第三方**、開源**、最新技術的合理利用,完全從零開始,在時間上、業務複雜度上都是不允許的。

根據個人開發經驗,我認為應該將重構分為:**重構、模組重構、架構重構3個不同的型別。

**重構:這個也系統業務關係比較少,更多的是優秀編碼規則的遵循和實現。例如:統一的錯誤異常丟擲和處理方案,易於理解的返回值模型,統一的入參驗證規則,基於設計模式6大原則的編碼,單測用例的補全和維護。這種型別的重構更易實現,並且對現有業務員邏輯的沒有影響。

模組重構:技術團隊既要滿足日常的需求開發,同時也要做到原有**的重構,開發資源肯定是不夠用的,比較可靠的方案是在選定乙個和新需求相關的、並且和其他業務模組耦合度比較低的業務模組進行重構,重新梳理業務流程和技術實現方案,這部分重構的實現依賴於**重構,良好的編碼規範和**質量是基石;對相關業務的熟悉度則是骨架。整個流程一直迭代下去完成整個系統的所有的模組的重構,這個過程中需要技術團隊基於**入手,從**級思維跳到設計級思維,抽象出當前的設計模型,考慮適應各種場景帶來的可擴充套件性、可維護性的壓力了。

架構重構:這個是重量級的重構,如果按部就班的由**重構->模組重構,前2個做好後,架構重構就很自然很容易的實現了:識別各種共用業務模組,抽取作為各種服務的基礎。如果一開始就重新來做,當前業務需求要暫停,同時技術團隊的開發壓力很大,需要大量的加班來減少對業務響應的阻礙。

參考:

如何熟悉乙個系統

作者 唐志龍 鯤龍 阿里巴巴高階開發工程師 開發人員經常會面臨下面一些場景 這樣的場景多了,就需要去梳理常見問題以及應對方法,方便後續遇到類似場景可以快速應對。業務學習就是從業務角度去學習系統,我們需要了解系統的客戶是誰 使用人是誰 帶來了什麼價值,系統提供了哪些功能等。不清楚業務,就等於不知道系統...

如何設計乙個秒殺系統

秒殺場景一般會在電商 舉行一些活動或者節假日在12306 上搶票時遇到。對於電商 中一些稀缺或者 商品,電商 一般會在約定時間點對其進行限量銷售,因為這些商品的特殊性,會吸引大量使用者前來搶購,並且會在約定的時間點同時在秒殺頁面進行搶購。限流 鑑於只有少部分使用者能夠秒殺成功,所以要限制大部分流量,...

如何設計乙個秒殺系統

秒殺場景一般會在電商 舉行一些活動或者節假日在12306 上搶票時遇到。對於電商 中一些稀缺或者 商品,電商 一般會在約定時間點對其進行限量銷售,因為這些商品的特殊性,會吸引大量使用者前來搶購,並且會在約定的時間點同時在秒殺頁面進行搶購。限流 鑑於只有少部分使用者能夠秒殺成功,所以要限制大部分流量,...