🎯 什麼情境該想到我
當你「用一個裸露的記錄(record)或雜湊/字典到處直接讀寫欄位」的時候——把它換成類別。類別能隱藏內部結構、控管欄位存取,也讓「存起來的值」和「算出來的值」對使用者一視同仁,不必在意差別。
⚙️ 怎麼用(步驟 / 公式)
意圖:把可變的裸資料記錄換成類別,以便控管欄位存取、隱藏內部結構。
動作要點(小步安全進行):
- 對持有這筆記錄的變數做封裝變數 Encapsulate Variable,讓存取集中到取值函式。
- 建立一個類別包住這筆記錄,讓取值函式回傳這個類別的實例;在類別裡提供對應的取值/設值方法。
- 逐一把「直接讀寫記錄欄位」的地方改成呼叫類別的存取方法,每步測試。
- 全部改完後,去掉對外直接暴露原始記錄的路徑,讓內部結構真正被隱藏。
- 之後可自由改變內部欄位表示,甚至把某些欄位改成「即時計算」而外界無感。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 若這筆記錄是不可變的、且只是單純資料傳遞(DTO),封裝的好處有限。
- 使用範圍很小、很短命的記錄不必大費周章。
🔗 相關工具
- 封裝變數 Encapsulate Variable(封裝記錄的第一步)
- 封裝集合 Encapsulate Collection(欄位是集合時的專門處理)
- 以物件取代基本型別 Replace Primitive with Object(把記錄中某個有規則的欄位進一步升級)
- 重構