重構永遠不是「只是改一下」的事

今天原本只打算把產品頁改成 client-side component,改善 SSR 時卡卡的效能與 UX。結果一碰到 loading 與 error 處理,才發現 API 根本沒涵蓋這些情境,只好連同整包一起重整。有人會問:「真的有必要動 API?用戶會在意嗎?」我很確定,這種邊角不處理乾淨,之後一定回頭咬人。

另外先前為了避快取加上的 timestamp 參數也拆掉了。看似能解決快取,實際卻讓圖片 URL 每次都不同,反而破壞瀏覽器快取。最後改成在上傳或刪除頭像時主動重置預覽 URL,用戶看到更新更即時、更順。同時也把顏色生成函式修了一下,避免測到那種詭異的橘綠色組合。

下午做產品評分與評論,又卡在「要不要開放訪客留言」。直覺是開放能提升互動,但想到 spam 防治與認證成本,最後先保守,只開放登入會員評論,後續再看數據調整。這類決定難免自我懷疑,但先把基礎守住更務實。

在 profile 頁面加了 secondaryTypographyProps,本來只是微調字體,結果一路改到 AuthProvider 的 useMemo。原因很單純:contextValue 每次 render 都被重建,不理想,所以包起來做小幅優化。

也補了一個一直在意的小體驗:裁剪頭像時增加「原始圖片預覽」。以前裁完就回不去,現在可一鍵回到初始,裁剪、縮放、旋轉狀態全部重置。測試時自己玩到忘記在 debug。

最後乾脆清了一批過時文件與 API 文檔。每份文件都是花時間寫的,砍起來難免掙扎,但放著不更新只會增加維護負擔。刪完後架構清爽不少,心情也跟著輕鬆。

總結:今天看似在細節裡打轉,但這些重構與取捨,都是為了下一次回看程式碼時,不會吐槽自己「當初在想什麼」。

Read more