更改函式宣告 (Change Function Declaration)

★★★★★Draft

FromRefactoring

📚 From the Books

更改函式宣告 (Change Function Declaration)Refactoring Moves

函式宣告是連接程式碼各部分的關節——它對可讀性和設計有深遠影響。一個選得好的名字,能讓你不必看實作就懂函式用途,還會引導出更廣泛的改進。

🧠 Why It's a Problem

宣告包含名字、參數的名稱與順序。它是介面,是別人第一眼會讀到的東西。名字含糊、參數排列不合領域直覺,理解成本就轉嫁給每一個呼叫者。

TIP

Fowler 建議先想好「假如這個函式一開始就取好名字,我會怎麼寫它的呼叫端?」——先想好呼叫的樣子,再回頭改宣告。

⚖️ Refactoring

機械步驟(簡單做法):① 想好新的宣告 → ② 找出所有舊宣告的引用點 → ③ 一次改掉宣告與全部呼叫點 → ④ 測試。對難以一次改完的情況,可用「遷移式」做法:先建新函式、讓舊函式委託給它,再逐步搬移呼叫端。

前 — 名字沒說清楚意圖
function addNumbers(x, y) {
  return x + y;
}

const result = addNumbers(5, 3);
console.log(result);

addNumbers 描述的是「怎麼做」,沒點出這個函式在領域裡代表什麼。

後 — 名字傳達領域意圖
function calculateSum(x, y) {
  return x + y;
}

const result = calculateSum(5, 3);
console.log(result);

宣告換成 calculateSum 後,呼叫端讀起來更貼近意圖;所有引用點也一併更新到新名字。

NOTE

當參數列表變長、或幾個參數老是成群結隊一起出現,更改宣告常會自然帶出 Introduce Parameter Object——把那組參數打包成一個物件。

🔑 Takeaways

✍️ My Notes

No notes yet — jot your takeaways or Q&A here.

📖 Further Reading