--- robots: noindex, nofollow tags: refactoring --- # Divergent Change ![](https://i.imgur.com/XWxmBER.png) ## 徵兆與症狀 你發現當在做一個功能的修改時,同時得改到許多不相關的類別。例如:當你新增一個產品類別時,你得要同時修改諸如:`查找`、`顯示`、`排序`...等方法。又或者是,當你增加一個資料庫時,得要修改這幾個類別,而當你新增跟資料庫無關的功能時,還是得修改這幾個類別。 ## 出現原因 通常這是源自於程式結構安排不良。 ## 處理方法 - 如果這些同時需要修改的地方,是順序上的差異,可以用 `Split Phase` 來分隔。 - 可以用 `Extract Class` 把相關行為拆到另一個類別去。