Typography

活版印字


  • Home
  • Archive
  • Categories
  • Tags
  •  

© 2020 alincode

Theme Typography by Makito

Proudly published with Hexo

發散式變化 vs 霰彈式修改

Posted at 2016-05-04

發散式變化(Divergent Change)

一個類別做了多於它責任的事,應該把這個 function 搬到其他類別或獨立一個類別。

改變前

1
2
3
4
5
6
class Account
function getAccount
function getBalance
function credit
function debit
function toXml

toXml 似乎不算 Account 的責任,而且 toXml 的邏輯,可以在其他地方也會用到,所以應該把它獨立出來一個類別或搬到它應該所屬的類別。

改變後

1
2
3
4
5
class Account
function getAccount
function getBalance
function credit
function debit
1
2
class XmlTool
function toAccountXml(account)

霰彈式修改(Shotgun Surgery)

當你需要有一個邏輯更變,需要修改多個類別,那應該把這些更變,搬到同個類別,而不是多個類別同時承受同個責任。

改變前

1
2
class OrderService
function sendMail
1
2
class PaymentService
function sendMail
1
2
class UserService
function sendMail

改變後

1
2
3
4
class MailerService
function orderConfirmed
function paymentConfirmed
function registerConfirmd

Share 

 Previous post: WebdriverIO 與 Chai 整合 Next post: 歐付寶 ChoosePayment vs PaymentType 

© 2020 alincode

Theme Typography by Makito

Proudly published with Hexo