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

Alan Syue
2 min readNov 28, 2019

原文出處:https://reurl.cc/Nane59

第一次參加 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 的活動。

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Alan Syue
Alan Syue

Written by Alan Syue

Backend Engineer at UPN | Love to share everything

Responses (1)

Write a response

我个人认为,非常难以做到 没有 legacy code。
第一、每个人的变量命名,就差别非常大;
第二、对每个问题而设计的解决方案不同;
第三、自己写完的代码,回头也会忘记是什么意思。

--