演講紀錄 - 給您一劑面對 Legacy 專案的還魂丹 - PHP 升版絕活
01 - 活動紀錄
- 活動名稱:給您一劑面對 Legacy 專案的還魂丹 - PHP 升版絕活
- 基本介紹:
在這場分享裡,您可以聽到大型系統重構的技巧,包括如何消滅 Global 變數、整合 PHPUnit、用 Xdebug 追蹤程式碼,以及搭配使用 PhpStorm 的祕技。
02 - 活動簡報
03 - 活動方紀錄摘要
工程師都不喜歡碰別人寫得程式碼,因為那些所謂的 Legacy Code 往往寫法過時、沒有文件,維護起來特別痛苦。但這些 Legacy 專案之所以能持續存在,往往代表其具有絕對的商業價值。身為成熟的開發者,我們應該格守童軍法則,除了讓 Legacy 專案能持續運作外,更應該在每一次的迭代裡往更好的方向前進。在這一場線上技術分享裡,Mouson 以面對它、接受它、處理它、放下它等四個階段,提示大家如何用正確的心態面對 Legacy 專案。
主題分享
在本次的分享裡,Mouson 先跟大家討論何謂 Legacy 專案?在一般的認知裡,都是指那些年代久遠、結構龐大、經歷多次迭代、沒有文件的程式碼。不過,Mouson 曾面對更棘手的情況。他所處理的 Legacy 專案,是跑在 Apache 1.3、PHP 4.1.2 的古老專案。不僅如此,這些 PHP 程式高達 1000 隻、逼近 20 萬行。除了經歷 5 個年代的開發風格且沒留下文件外,專案還使用了不常見的商用資料庫,甚至還包括用 C 寫的 PHP Extension。最頭大的是,一些 Extension 是連原始碼都沒有!
即便面對這種史詩級的專案,Mouson 鼓勵大家以正確的心態面對,並謹記那些不能殺死你的,終將使你更強大的格言,依鐵哥(Jace)在「重構或重寫 Legacy code 的幾個階段」一文裡提到的四個階段 - 面對它、接受它、處理它、放下它,逐一說明他們團隊與 Legacy 專案博鬥的故事與從中累積出來的經驗及方法。
首先,團隊需正視自己手上的 Legacy 專案,綜覽全局,並花時間理解 Legacy Code 的架構,做為後續重構的基礎。接著,他與團隊合力改變工作流程,包括建立 Issue Tracking、更換版本控制系統成 Git、導入 CI/CD 自動化。而在撰寫程式的工作上,他們選擇使用 PhpStorm 來協助檢查可能在升版過程中出錯的程式碼,並以內建的重構工具輔助他們修改程式碼。另外,團隊也開始施行 TDD,針對核心演算法進行重構、補上測試,並定期 Code Review。在逐步改善的過程中建立研發團隊的信譽,讓業務及客服團隊對產品的信心提升。
除了分享團隊升級的心路歷程外,Mouson 也以 PhpStorm 實際示範了幾個重構情境,包括如何用 PhpStorm 搭配 Xdebug 的中斷點、Step Into 等功能追蹤原始碼,加上幾個常用的快速鍵,就可以在眾多 Class 及 Method 間跳躍。以及 PhpStorm 在撰寫 TDD 的測試案例時,可以運用 IdeaVim 的客製化設定一秒複製測試案例,搭配執行測試的快速鍵,讓 TDD 開發更順暢。從 Mouson 示範過程中,能夠發現只要能夠掌握 PhpStorm、Xdebug 的操作技巧,重構程式似乎就沒有這麼複雜,用 TDD 來開發也沒想像中的困難。
- 活動連結:給您一劑面對 Legacy 專案的還魂丹 - PHP 升版絕活 | IntelliJ Tips
- 簡報連結:PHP 升版絕活 - 給你一劑面對 Legacy 專案的還魂丹 - Speaker Deck
- 參考資料:重構或重寫 Legacy code 的幾個階段
03 - 活動影片
当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器