PHP 也有 Day #50:處理前人的遺產 - 聊 legacy code | 活動心得記錄


第一次參加 PHP 也有 Day 的活動,這次報名的主題是談談 legacy code。活動地點在三創,邀請的講者是 Recca Chao。

這次談論的議程有三大點:
  1. 定義什麼是 legacy code
  2. 重構和重寫的選擇,如何提議重構及評估時程
  3. 如何避免自己產生新的 legacy code

什麼是 legacy code

一個專案中有符合以下 4 點,可以被定義為 legacy code
  1. 年代久遠
  2. 結構龐大
  3. 歷經多次迭代
  4. 沒有文件
其中沒有文件算是我覺得蠻有感的問題,剛接觸專案時碰到之前處理的工程師已經不在,又沒有文件可以參考時,就只能慢慢 trace code,也造成重構上的不易,容易改 A 錯 B。

如何評估重構和重寫

講者建議除非遇到像是專案要整個換成新的語言,或者換成相異度很大的框架時,再來考慮重寫。原因是重寫會遇到像是市場的風險(被競爭者淘汰)、開啟專案的時間及人力成本等。有時技術上可行,但卻會在商業上失敗。

如果是重構的話,講者建議在重構前要先
  1. 寫測試:可以先功能測試,再拆成單元測試
  2. 補文件:避免寫完後,後續接手也無法快速了解(包含自己)
重構的話可以逐步改進,在保持實作新需求後,再漸漸修改 legacy code。

如何避免產生新 legacy code

講者有提到,既然開始重構了,也要避免自己又產生出新的「 遺產 」,可以依照下列四個方向努力:
  1. 時常與同事討論文件內容
  2. 和同事做 code review,有機會讓更多人對程式碼有印象
  3. 建立方便修改的小專案
  4. 花時間維護文件 ( legacy code 的要素之一就是沒有文件 )

總結

今天課程上講者提到很多觀念,我自己也沒有完整落實,另外我覺得此次內容脈絡很有條理、方法也很具體。很感謝講者的分享,下次也會想再參加 PHP 也有 Day 的活動。




如果喜歡我的文章,想隨時收到最新行銷、技術分享,歡迎按 fb 粉專讚

加入好友  或加入 LINE 官方帳號,即時接收最新文章通知

留言

這個網誌中的熱門文章

自動將 Blogger 文章發佈到 facebook 粉絲專頁 (上)

2021 年 1 月熱門電子書推薦 | 精選書籍推薦

使用 docker 部署 Python Flask | 心得分享