🎯 什麼情境該想到我
當你「有個暫時變數只是用來保存某段運算的結果」的時候——把它改成一個查詢函式。這樣任何地方都能取用這個計算,也移除了區域變數這個障礙,讓長函式更容易被提煉函式 Extract Function拆開。
⚙️ 怎麼用(步驟 / 公式)
意圖:把只用來保存某運算結果的暫時變數,改成一個查詢(getter)函式。
動作要點(小步安全進行):
- 確認這個變數在使用前確實已被賦定值,且賦值它的運算式沒有副作用(每次算都得到相同結果)。
- 若變數目前可變,先設為不可變並測試,確認它只被賦值一次。
- 把「賦值給該變數的那段運算式」用提煉函式 Extract Function抽成一個查詢函式(函式不得修改任何物件狀態)。
- 用行內變數 Inline Variable把該暫時變數換成對這個查詢函式的呼叫。
- 編譯、測試。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 只適用於「計算型」暫時變數;若變數是用來累加、迭代中改變狀態,或其運算式有副作用,就不適用。
- 若該計算很昂貴又被頻繁使用、變數是刻意的快取,改成每次查詢要衡量效能。
🔗 相關工具
- 提煉函式 Extract Function(此手法常是為了讓提煉函式更順而做)
- 行內變數 Inline Variable(替換暫時變數的最後一步)
- 提煉變數 Extract Variable(相反方向:想留下解釋性變數時)
- 重構