重構與技術債 MOC
用途:串連「重構的目的、時機與做法」以及技術債的相關筆記。 上層:Software Engineering MOC
為什麼重構
何時與如何
簡化條件邏輯
從「這段條件怎麼讀」一路到「這個條件該不該存在」:
- Decompose Conditional 要抽的是三段,不只是條件 — 條件/then/else 各自抽成一句話
- 條件抽成變數還是 function,判準是求值時機與規模 — 我多數時候用變數,以及它的兩個前提
- 合併條件式的前提是條件彼此平行 — 有先後順序或副作用時不能合併
- 攤平巢狀條件有兩條路:guard clause 省求值,重複條件換平行 — 兩種攤平的取捨
- Replace Conditional with Polymorphism:switch 不會消失,只會收斂到 factory — 收斂成一個 factory,含 map 寫法
- Introduce Special Case:把特殊值做成同形狀的物件 — Null Object
- 特例物件只適合合法的空狀態,不適合查詢失敗 — 這招的誤用邊界
大規模遷移
怎麼把一個跨越整個 codebase 的替換做完而不凍結產品:
- 決定性的 codemod 是大遷移的地基,agent 只做擴建 — 先有測試與工具,agent 只在窄 scope 內動手
- 讓遷移進度可見是推動採用的手段 — 計數器/標示工具/進度圖/PR bot,新增數歸零才是轉折
- 最難遷移的模式,往往正是讓舊系統難以推理的那些 — 遷移阻力是訊號不是純成本
來源:Linear 從 styled-components 遷移到 StyleX