🎯 什麼情境該想到我
當你「一個類別塞了太多欄位、扛了太多責任,什麼事都往它身上放」的時候——它試圖做太多事,難免出現重複與混亂。
⚙️ 怎麼用(步驟 / 公式)
這味道是什麼徵兆:欄位一多,類別幾乎必然承擔了多個職責,內部也容易長出重複碼。一個好用的觀察法:看欄位(或方法)名字有沒有共同前綴/後綴,那常是可以分出去的一群。
通常用哪些重構手法對治:
- 提煉類別(Extract Class):把一群相關的欄位與行為抽成獨立類別。
- 提煉超類(Extract Superclass):把共通部分上提到父類。
- 以子類取代型別碼(Replace Type Code with Subclasses):若類別因某個型別欄位而分支,用子類拆解。
先找出「常一起被用到」的欄位群,它們是最自然的切分線。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 拆分要沿著真正的職責界線;為了「行數」硬拆會製造出彼此黏膩的碎片與更多間接。
- 有些領域核心物件天生較大,重點是「職責是否單一」,而非絕對大小。
🔗 相關工具
- 發散式變化 Divergent Change(過大類別常因此而多因變化)
- 純資料類別 Data Class/過長函式 Long Function(大類別內常見的伴生味道)
- 重構