發散式變化(Divergent Change)
一個類別做了多於它責任的事,應該把這個 function 搬到其他類別或獨立一個類別。
改變前
1 | class Account |
toXml 似乎不算 Account 的責任,而且 toXml 的邏輯,可以在其他地方也會用到,所以應該把它獨立出來一個類別或搬到它應該所屬的類別。
改變後
1 | class Account |
1 | class XmlTool |
霰彈式修改(Shotgun Surgery)
當你需要有一個邏輯更變,需要修改多個類別,那應該把這些更變,搬到同個類別,而不是多個類別同時承受同個責任。
改變前
1 | class OrderService |
1 | class PaymentService |
1 | class UserService |
改變後
1 | class MailerService |