重構 - 改善既有程式的設計 - Shotgun Surgery
April 13, 2020這篇文章討論《重構 - 改善既有程式的設計》裡的3.6 - Shotgun Surgery
圖片以及程式碼來源自重構 - 改善既有程式的設計
散彈式修改
當你遇到某個變化時 你必須到許多不同的類別去進行修改 這就是散彈式修改
如果需要修改的程式碼散落在各處 你不但很難找到他們 也很容易忘記某些重要的修改
起因
原本應該屬於某個類別的責任 被分散在各處
解法
Move Method
移動你的函式還有欄位 到應該去的類別 如果這個類別還不存在就新增一個類別
Inline Class
跟Extract Class相反 如果你覺得某個類別根本沒有在承擔責任 那就把這個類別的所有特性搬移到另一個類別之中 然後移除原本的類別
比較
跟發散式變化的差別如下
發散式變化 指的是一個類別會受到多種變化的影響
散彈式修改 指的是一個變化會影響到多個類別