🎯 什麼情境該想到我
當你「發現同樣的幾個資料項目老是黏在一起出現」的時候——好幾個類別都有這組欄位、好幾個函式簽名都帶著這組參數(像 startDate/endDate、street/city/zip)。
⚙️ 怎麼用(步驟 / 公式)
這味道是什麼徵兆:這些總是成群結隊的資料,其實是一個尚未被命名的概念在喊「我想變成一個物件」。判斷小技巧:試著刪掉其中一個資料項,若剩下的就失去意義,代表它們本該是一體。
通常用哪些重構手法對治:
- 提煉類別(Extract Class):把這組資料變成一個有名字的類別(如 DateRange)。
- 引入參數物件(Introduce Parameter Object):把成群的參數包成一個物件傳遞。
- 保持物件完整(Preserve Whole Object):之後傳遞時直接傳這個物件,而非再拆開。
好處不只縮短參數列——成物件後,行為(如「範圍是否重疊」)也有地方可放,往往能連帶消除重複。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 只有一兩個地方偶爾一起出現、且未來不會成長,可能還不值得為它建類別。
- 確認這組資料真的表達「同一個概念」再合併,別把碰巧相鄰的無關值硬綁一起。
🔗 相關工具
- 過長參數列 Long Parameter List(資料泥團是造成長參數列的常見原因)
- 基本型別偏執 Primitive Obsession(成群的基本型別常一起升級為領域物件)
- 純資料類別 Data Class(新提煉出的類別要記得放進行為,別淪為純資料)
- 重構