破解遺留系統快速重構的5步心法(附實例)

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

  • 編碼之前缺乏有效的設計
  • 成本上的考慮,在原功能堆砌式編程
  • 缺乏有效代碼質量監督機制

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

圖片

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

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

為了讓內容能夠切切實實地幫助到大家,聽說這個專欄經過了多次深入用戶、專家調研的反復打磨。而且實打實地帶大家實戰,圍繞著一個貼近日常開發場景的 APP 項目重構。特意看了下,這個實例里綜合了很多遺留系統里的典型代碼“壞味道”和代碼耦合問題。 完整跟下來,不但能幫助你和你的團隊掌握專欄里的流程方法、工具、設計思想,還能融會貫通到其他項目中,真正做到提高團隊效率,提升最終的交付質量。
圖片

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

第二步:分析設計篇這部分是針對遺留系統業務復雜度高的問題,會結合實例教你如何分析系統、診斷問題。根據現有架構與理想架構設計的差距,找出撬動遺留系統的關鍵杠桿點。學完這個部分,你就能了解主流的應用架構,掌握常用的遺留系統分析工具

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

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

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

圖片

詳細可直接查看《大型Android系統重構實戰》

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,967評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,273評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,870評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,742評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,527評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,010評論 1 322
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,108評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,250評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,769評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,656評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,853評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,371評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,103評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,472評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,717評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,487評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,815評論 2 372

推薦閱讀更多精彩內容

  • 移動應用遺留系統重構(13)-??????一鏡到底!MVP重構示例篇 前言 上一篇移動應用遺留系統重構(12)- 編譯調...
    Kepler_II閱讀 275評論 0 0
  • 背景 《重構》誕生至今有近17個年頭了,日常開發中大家談到重構,要么非常隨意,認為重構就是改代碼;要么非常謹慎,把...
    零一間閱讀 687評論 0 3
  • 第一部分 開始 第 01 章 了解遺留項目中的挑戰 1.1 遺留項目的定義 任何已經存在的、難以維護或難以擴展的項...
    技術楠閱讀 1,701評論 0 0
  • 背景 《重構》誕生至今有近17個年頭了,日常開發中大家談到重構,要么非常隨意,認為重構就是改代碼;要么非常謹慎,把...
    李永順閱讀 3,421評論 0 18
  • 遺留代碼 從何而來 軟件是如何演變成遺留代碼? 初期,架構清晰,代碼精煉,指點江山 中期,新功能簡單在原有代碼加上...
    JayWu的架構筆記閱讀 299評論 0 0