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