破解遺留系統(tǒng)快速重構(gòu)的5步心法(附實例)

前兩天和一個架構(gòu)師朋友閑聊,說到了 「重構(gòu)」 這個話題,他們公司早年間上線的項目系統(tǒng),因一直沒專人在演進過程中為代碼質(zhì)量負責(zé),導(dǎo)致現(xiàn)在代碼越來越混亂,逐漸堆積成“屎山”,目前的維護成本已遠高于重新開發(fā)一套新系統(tǒng),想重構(gòu)也沒有合適的人力物力以及時機,只能繼續(xù)湊合用。說實在的,這確實不只是朋友他們一家公司會遇到的問題,而造成這種情況的原因大概率有以下幾點:

  • 編碼之前缺乏有效的設(shè)計
  • 成本上的考慮,在原功能堆砌式編程
  • 缺乏有效代碼質(zhì)量監(jiān)督機制

可以看出,最好的解決辦法就是不要堆積遺留問題。對此,業(yè)界現(xiàn)有的比較“成熟”的解決思路是:通過持續(xù)不斷地重構(gòu)將代碼中的“壞味道”清除掉。 可惜說起來容易,做起來卻很難,要克服遺留系統(tǒng)重構(gòu)往往有三大阻力:首要的就是怕出錯,不知道怎樣保障重構(gòu)的安全性和效率,其次,很多遺留系統(tǒng)規(guī)模及業(yè)務(wù)復(fù)雜度太高 , 開發(fā)人員又缺乏改造的方法及經(jīng)驗,根本不知從何入手 而且如果修改只是單單停留在代碼層面上,很難徹底解決問題,從而提高研發(fā)效率和提高產(chǎn)品質(zhì)量。 后來我們扒了不少文章,終于看到一個不錯的,一針見血地指出了三個關(guān)鍵點:自動化、系統(tǒng)化及工程化 。 簡單來講,就是要先通過自動化重構(gòu)提高開發(fā)效率,再通過系統(tǒng)的流程方法,逐一擊破,最后通過工程化管理,持續(xù)演進,如下圖所示。

圖片

分享人是 Thoughtworks 資深咨詢師、也是中國區(qū) DTO 團隊敏捷技術(shù)教練「黃俊彬」。最近極客時間還特意邀請他做了一個重構(gòu)系統(tǒng)專欄—— 大型 Android 系統(tǒng)重構(gòu)實戰(zhàn)》 ,提前看了下導(dǎo)讀,里面不但有詳細的關(guān)于遺留系統(tǒng)重構(gòu)三大關(guān)鍵的指南講解,他還特意選擇了一個在 實際工作可能會遇到的 App 項目,直接帶你實操改造,這點還挺難得的。

在這個過程中,他自己也總結(jié)了一套行之有效和高效實戰(zhàn)系統(tǒng)重構(gòu)的方法論,并且嘗試把這套方法論傳授給更多的人,所以,他跟極客時間合作推出了 《大型 Android 系統(tǒng)重構(gòu)實戰(zhàn)》 專欄。這種資歷的大佬能出來開課,把自己獨特的方法和經(jīng)驗共享出來,真的很難得。五步提升,帶你真正實戰(zhàn)系統(tǒng)重構(gòu) 。

為了讓內(nèi)容能夠切切實實地幫助到大家,聽說這個專欄經(jīng)過了多次深入用戶、專家調(diào)研的反復(fù)打磨。而且實打?qū)嵉貛Т蠹覍崙?zhàn),圍繞著一個貼近日常開發(fā)場景的 APP 項目重構(gòu)。特意看了下,這個實例里綜合了很多遺留系統(tǒng)里的典型代碼“壞味道”和代碼耦合問題。 完整跟下來,不但能幫助你和你的團隊掌握專欄里的流程方法、工具、設(shè)計思想,還能融會貫通到其他項目中,真正做到提高團隊效率,提升最終的交付質(zhì)量。
圖片

第一步:基礎(chǔ)提升篇本篇主要講解重構(gòu)以及自動化測試的基礎(chǔ)知識,包括重構(gòu)的類型、時機、安全重構(gòu)的手法,自動化測試的策略和常用框架。這部分內(nèi)容是日常開發(fā)的必備技能,能有效幫助你提高編碼的效率以及代碼的質(zhì)量。

第二步:分析設(shè)計篇這部分是針對遺留系統(tǒng)業(yè)務(wù)復(fù)雜度高的問題,會結(jié)合實例教你如何分析系統(tǒng)、診斷問題。根據(jù)現(xiàn)有架構(gòu)與理想架構(gòu)設(shè)計的差距,找出撬動遺留系統(tǒng)的關(guān)鍵杠桿點。學(xué)完這個部分,你就能了解主流的應(yīng)用架構(gòu),掌握常用的遺留系統(tǒng)分析工具。

第三步:解耦重構(gòu)篇通過系統(tǒng)的重構(gòu)方法流程,借助自動化測試以及自動化重構(gòu)方法,帶你對示例項目做組件化重構(gòu)和組件內(nèi)的分層架構(gòu)重構(gòu)。另外,黃老師還會給你講解業(yè)內(nèi)一些主流的注入及路由框架使用及原理,幫助你在項目中用好這些框架。學(xué)完這個部分,重構(gòu)易出錯的問題就能迎刃而解了。

第四步:持續(xù)交付篇這一篇會系統(tǒng)介紹組件化后項目的版本管理、制品管理以及分層分級流水線的設(shè)計等工程管理問題。這些實用技巧是老師從多年的項目經(jīng)驗中沉淀總結(jié)而來,有助于解決改造不全面的問題。

第五步:擴展篇這一部分會將遺留系統(tǒng)的問題從 APP 擴展到整個手機廠商的 Android 定制系統(tǒng),帶你了解Android定制系統(tǒng)的耦合問題以及解耦的策略及方法。這個部分,可以擴展你的知識面,讓你站在更復(fù)雜的問題域上,綜合運用之前所學(xué)的內(nèi)容,以不變應(yīng)萬變。 說了這么多,具體內(nèi)容我們可以看看一起目錄。

圖片

詳細可直接查看《大型Android系統(tǒng)重構(gòu)實戰(zhàn)》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容