函式的參數列太長,呼叫端得記住一長串參數的順序與意義。函式應專注於「做什麼」,一長串參數卻把「如何做」的細節都灌進了介面。
🧠 Why It's a Problem
- 難記又難讀:參數一多,順序容易搞錯,呼叫端一眼看不出每個位置是什麼意思。
- 常藏著別的味道:一長串參數裡,經常有幾個「總是一起出現」的資料泥團,它們其實想變成一個物件。
- 本章把它歸在函式與參數這一組——函式應專注於做什麼(What),而非把冗長的如何做(How)攤在介面上。
NOTE
對應重構是把相關參數組合成 Parameter Object(Introduce Parameter Object):用一個有名字的物件,取代一串零散的參數。
⚖️ Refactoring
Introduce Parameter Object:辨認出總是一起傳遞的那組參數,把它們包成一個物件。
前 — 一長串扁平參數
function bookConcert(customer, date, seatRow, seatNumber, priceBand) {
// ...
}
bookConcert(alice, '2026-07-02', 12, 8, 'A'); // 每個位置是什麼?得回去查簽章12、8、'A' 分別是什麼?呼叫端讀不出來。
後 — 用有名字的物件收攏相關參數
function bookConcert(customer, show) {
// show = { date, seat: { row, number }, priceBand }
}
bookConcert(alice, {
date: '2026-07-02',
seat: { row: 12, number: 8 },
priceBand: 'A',
});參數變少、意義變清楚;seat 這組資料也終於有了名字。
🔑 Takeaways
- 過長參數列的代價是呼叫端的記憶負擔,也常是資料泥團的藏身處。
- 標準解是 Introduce Parameter Object:把總是一起出現的參數包成有名字的物件。
- 這和函式參數數量的原則一致——參數越少,函式越好讀、好用。
No notes yet — jot your takeaways or Q&A here.