🎯 什麼情境該想到我
當你「看到一段有獨立意圖的程式碼,得停下來想一下才知道它在做什麼」的時候——把它抽成一個有名字的函式,用名字直接說明意圖,讀的人看名字就懂,不必再讀細節。
⚙️ 怎麼用(步驟 / 公式)
意圖:把一段程式碼抽成獨立函式,以函式名稱解釋這段碼的「意圖」而非「做法」。
動作要點(小步安全進行):
- 新建一個函式,用「它做什麼」而非「它怎麼做」來命名(就算實作只有一行也值得)。
- 把要提煉的程式碼複製進新函式。
- 檢查被提煉的碼用到哪些原本作用域的變數:只讀取的當參數傳入;在段內宣告只在段內用的,留在新函式當區域變數。
- 若被提煉碼會修改某個外部變數,看是否能改成「回傳該變數的值」。修改超過一個變數時,通常要先做別的重構(如以查詢取代暫時變數、拆分變數)再提煉。
- 原處改成呼叫新函式,編譯並測試。
- 檢查其他地方是否也有相同或相似的碼,可改呼叫這個新函式。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 判準是「意圖與實作的距離」,不是長度:若函式本體和名字一樣直白、沒帶來額外理解價值,就別提煉,甚至該反向做「行內函式」。
- 反向手法:行內函式 Inline Function。
🔗 相關工具
- 行內函式 Inline Function(本手法的反向操作)
- 以查詢取代暫時變數 Replace Temp with Query(先消除暫時變數,能讓提煉更順)
- 重構