🎯 什麼情境該想到我
當你「一段程式碼其實在依序處理兩件不同的事情」(例如先把輸入解析成某種結構、再拿它去計算結果)的時候——把它拆成前後兩個清楚的階段,各自處理一件事、各有自己的中間資料結構,就能分別理解與修改。
⚙️ 怎麼用(步驟 / 公式)
意圖:把一段依序做兩件不同事情的程式碼,拆成前後兩個獨立階段,中間用一個資料結構銜接。
動作要點(小步安全進行):
- 把第二階段的程式碼用提煉函式 Extract Function抽成獨立函式。
- 編譯、測試。
- 引入一個「中間資料結構」,作為抽出函式的參數傳入。
- 檢查第二階段用到的每個參數:若它其實屬於第一階段的產物,就把它搬進中間資料結構。
- 對第一階段做提煉函式 Extract Function,讓它回傳這個中間資料結構。
- 於是形成「第一階段產出中間資料 → 第二階段消費中間資料」的清楚兩段式流程。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 若兩件事本來就緊密交織、拆開反而要傳一堆狀態來回,硬拆會更亂。
- 只有一個目的、沒有明顯前後兩件事的程式碼,不需要拆。
🔗 相關工具
- 提煉函式 Extract Function(拆分階段主要靠一連串提煉函式完成)
- 引入參數物件 Introduce Parameter Object(中間資料結構常以參數物件的形式承載)
- 重構