🎯 什麼情境該想到我
當你「兩個類別其實在做同一類事情,介面(方法名稱、參數)卻長得不一樣,導致無法互相替換」的時候。
⚙️ 怎麼用(步驟 / 公式)
這味道是什麼徵兆:把功能相近的類別做成一致的介面,才能享受多型帶來的可替換性;介面各說各話,就白白失去互換與統一處理的好處,還逼使用者記兩套用法。
通常用哪些重構手法對治:
- 改變函式宣告(Change Function Declaration):對齊方法名稱與參數,讓兩者介面一致。
- 搬移函式(Move Function):把行為搬移,使兩個類別具備對等的能力。
- 提煉超類(Extract Superclass):當兩者對齊到足夠相似時,抽出共同父類收攏一致介面。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 若兩個類別只是「表面像、本質不同、不會互換」,強行統一介面反而製造假抽象。
- 對齊到底要不要抽父類,取決於它們共通的程度與未來是否真的以多型使用。
🔗 相關工具
- 重複程式碼 Duplicated Code(對齊介面後常能進一步消除重複)
- 重複的 switch Repeated Switches(統一介面是走向多型的前置)
- 重構