PHP 也有 Day #50:處理前人的遺產 - 聊 legacy code | 活動心得記錄
第一次參加 PHP 也有 Day 的活動,這次報名的主題是談談 legacy code。活動地點在三創,邀請的講者是 Recca Chao。
這次談論的議程有三大點:
- 定義什麼是 legacy code
- 重構和重寫的選擇,如何提議重構及評估時程
- 如何避免自己產生新的 legacy code
什麼是 legacy code
一個專案中有符合以下 4 點,可以被定義為 legacy code
- 年代久遠
- 結構龐大
- 歷經多次迭代
- 沒有文件
其中沒有文件算是我覺得蠻有感的問題,剛接觸專案時碰到之前處理的工程師已經不在,又沒有文件可以參考時,就只能慢慢 trace code,也造成重構上的不易,容易改 A 錯 B。
如何評估重構和重寫
講者建議除非遇到像是專案要整個換成新的語言,或者換成相異度很大的框架時,再來考慮重寫。原因是重寫會遇到像是市場的風險(被競爭者淘汰)、開啟專案的時間及人力成本等。有時技術上可行,但卻會在商業上失敗。
如果是重構的話,講者建議在重構前要先
- 寫測試:可以先功能測試,再拆成單元測試
- 補文件:避免寫完後,後續接手也無法快速了解(包含自己)
重構的話可以逐步改進,在保持實作新需求後,再漸漸修改 legacy code。
如何避免產生新 legacy code
講者有提到,既然開始重構了,也要避免自己又產生出新的「 遺產 」,可以依照下列四個方向努力:
- 時常與同事討論文件內容
- 和同事做 code review,有機會讓更多人對程式碼有印象
- 建立方便修改的小專案
- 花時間維護文件 ( legacy code 的要素之一就是沒有文件 )
總結
今天課程上講者提到很多觀念,我自己也沒有完整落實,另外我覺得此次內容脈絡很有條理、方法也很具體。很感謝講者的分享,下次也會想再參加 PHP 也有 Day 的活動。
如果喜歡我的文章,想隨時收到最新行銷、技術分享,歡迎按 fb 粉專讚
或加入 LINE 官方帳號,即時接收最新文章通知
留言
張貼留言