🎯 什麼情境該想到我
當你「用一個基本型別(字串、數字…)表示某個其實有自己規則與行為的概念」(例如電話號碼、溫度、金額、顏色)的時候——把它升級成一個小類別。一開始它可能只是包一個值,但很快就會成為安放相關驗證、格式化與換算邏輯的好地方。
⚙️ 怎麼用(步驟 / 公式)
意圖:把「其實有行為與規則的基本型別值」升級成一個類別。
動作要點(小步安全進行):
- 若該資料尚未封裝,先對它做封裝變數 Encapsulate Variable。
- 建立一個簡單的「值類別(value class)」,建構子接收這個基本值,並提供取值方法(先做成不可變)。
- 讓設值函式改為建立這個值類別的實例、取值函式改為回傳裡面的值。
- 逐步把散落各處、針對這個值的相關邏輯(驗證、格式化、比較、換算)搬進這個新類別。
- 更新型別宣告與使用處,測試。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 若這個值真的只是單純資料、沒有任何規則或相關行為,多包一層類別是過度設計。
🔗 相關工具
- 封裝變數 Encapsulate Variable(本手法的起手式)
- 引入參數物件 Introduce Parameter Object(同樣把零散資料聚成有概念的物件)
- 以查詢取代暫時變數 Replace Temp with Query(搬移行為時常搭配使用)
- 重構