跳到主要內容
工程品質與資安5 分鐘閱讀

同一個修改要改好幾個專案:維護多個前端的心得

公司同時維護多個 Vue 2 與 Vue 3 前端,同一個需求常要改好幾次。整理實際遇到的問題、漏改的情況,以及什麼時候才值得抽成共用模組。

我在工作上維護的不是一個前端,而是好幾個:Vue 2 + Vuex 的專案、Vue 3 + Pinia 的專案,還有桌機版和手機版分開的系統。它們服務同一套業務,所以一個需求常常要改好幾次。

這是課堂上學不到的事。這篇整理我實際遇到的狀況。

同一個需求,要做好幾次

幾個真實的例子:

  • 註冊姓名欄位調整:桌機版和手機版都要改。
  • 登入後回到原本頁面:兩個版本各做一次。
  • 圖片檔名中文改英文:每個專案都要處理。
  • 無障礙修正:多個專案都要符合。

這些修改的概念相同,但實作不一定能直接複製:

差異Vue 2 專案Vue 3 專案
狀態管理VuexPinia
UI 元件庫Vuetify 2Vuetify 3
路由Vue Router 3Vue Router 4

例如 404 路由,Vue Router 3 寫 path: '*',Vue Router 4 要寫 /:pathMatch(.*)*。同樣的概念,寫法不一樣,測試也要再做一次。

最大的風險是漏改

修改次數變多,時間成本還不是最麻煩的,真正的問題是漏掉。

我自己就遇過:有一次把註冊頁的姓名拆解邏輯移除,測試也沒問題,後來才發現登入頁的補填資料表單裡還有同一段邏輯。兩個專案都是這樣。

原因很簡單:相同的邏輯在同一個專案裡就寫了兩份,專案之間又各有一份。需求單只寫「註冊」,我就只改了註冊。

我現在的做法

動手前先搜尋

改之前先在每個專案搜尋相同的函式和關鍵字,確認影響範圍:

bash
grep -rn "splitName" src

只改眼前這一支檔案,是最容易漏的做法。

用 Notion 列出專案功能清單

發生過漏改之後,我開始用 Notion 把每個專案的功能列成清單,例如註冊、登入、補填資料、會員資料。

有需求時先對照清單,看看哪些功能會受影響;測試時再照著清單一項一項走過。這樣姓名這類改動,就不會只測到註冊頁,登入頁的補填資料表單也會在測試範圍裡。

清單要隨著功能更新才有用。新增功能時順手補上,它就是一份不靠記憶的測試範圍。

一次改完

同一個需求盡量同一天處理完所有專案。隔太久,就會忘記當時的上下文,也更容易出現版本不一致。

什麼時候該抽成共用模組

看到重複,第一個想法通常是抽成共用套件。但我現在不會馬上這麼做。

適合抽出來的:

  • 不依賴框架的純邏輯,例如日期格式、資料驗證。
  • 真的完全相同,而且會一起改的規則。
  • 像日期選擇器的鍵盤操作這種,同專案內多個頁面共用的邏輯,就可以先抽成 mixin 或 composable。

不適合馬上抽的:

  • 綁定 UI 元件庫的畫面,Vuetify 2 和 3 差異很大。
  • 只是目前長得像,但各自的需求會往不同方向發展。

共用模組也有成本:要處理版本、發布,改一個地方可能影響所有專案。Vue 2 和 Vue 3 要共用元件,更是不容易。

我的判斷方式是:先在專案內抽出來,確認它穩定,而且真的在多處一起變動,才考慮跨專案共用。

這次學到的事

  • 維護多個專案時,「知道要改哪裡」比「怎麼改」更花時間。
  • 搜尋是最便宜的防護。
  • 重複程式碼不一定要立刻消除,錯誤的抽象比重複更難維護。
  • 需求單寫的範圍不一定等於實際影響的範圍。