🎯 什麼情境該想到我
當你「用基本型別(字串、整數、浮點數)去硬撐一個其實有意義的領域概念」的時候——例如用字串存電話號碼、用數字存金額、用一對數字表達範圍。
⚙️ 怎麼用(步驟 / 公式)
這味道是什麼徵兆:偷懶用基本型別,會讓「格式化、驗證、換算、比較」這類本屬於該概念的行為無處安放,只能散落各地重複。把它升級成一個小型別,行為就有了家,語意也更清楚(避免把公里和英里、金額和數量搞混)。
通常用哪些重構手法對治:
- 以物件取代基本型別(Replace Primitive with Object):把「電話號碼」「金額」等做成專屬的小類別。
- 以子類取代型別碼(Replace Type Code with Subclasses):若那個基本值是拿來分類、驅動分支,改用子類。
- 範圍類資料可搭配提煉類別做成 Range 物件。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 不是每個字串/數字都要包成物件;只有當它承載領域意義、且有相關行為或約束時才值得。
- 純粹的、無附帶行為的量值在小範圍內用基本型別更輕便。
🔗 相關工具
- 重複的 switch Repeated Switches(型別碼常伴隨重複的分支,改用子類或多型)
- 資料泥團 Data Clumps(成群的基本型別常一起升級為物件)
- 過長參數列 Long Parameter List(一串基本型別參數可換成領域物件)
- 重構