iT邦幫忙

2023 iThome 鐵人賽

DAY 10
1
影片教學

『請你跟我這樣做』- 30 天 TDD 出一個 SLOT 算分器系列 第 10

Day 10 重構出輪帶表與盤面物件

  • 分享至 

  • xImage
  •  

Yes

再消基本型別偏執

基本型別是必要的存在,因為它儲存了系統的狀態。為什麼「基本型別偏執」會是一個壞味道?因為如果我們大量地直接操作基本型別,那麼閱讀者(也就是三個月後的我們自己)就必須從頭到底讀完,才能「猜測」出我們的業務邏輯。解決這件事的基本操作,第一個想法很直覺的就是「抽方法」。抽完方法,其實我們就可以透過給這個方法一個好命名,來提升可讀性。

然而這還沒完,這個抽出來的方法可能需要拿一到兩個數值來當成計算參數,然而這整個商業邏輯是由「數值」與「行為」組合起來的,「數值」與「行為」無法獨自存在,少了彼此都無法完整表現某個業務邏輯。既然如此,那我們不如就把這兩個傢伙抽出來另外放到一個「物件」中,這個物件身上有數值也有行為,因此它可以不靠別人,自己獨立完成一整件事。如此一來,原程式中需要讀一整段才能了解的抽象業務邏輯,可以用簡單的「叫這個物件去做事」來取代即可。

有血有肉的物件

物件,就是有值、有行為的『實體』,而類別則是系統拿來產生物件的「範本」。一個物件有值又有行為有什麼好處?除了上述的呼叫端的語言表現力以外,最大的好處就是當要「修改」時,不論要改數值還是要改行為,我們都直接進來這個物件修改,這會讓外部因此修改而產生的影響能縮到最小。

我們知道,bug 總在修改時。每當因需求改變,受影響的範圍能縮小,那麼我們改起來也就不會那麼麻煩,對改錯這件事也不會那麼害怕了。


上一篇
Day 9 重構長方法與 Primitive Obsession
下一篇
Day 11 Design by Contract
系列文
『請你跟我這樣做』- 30 天 TDD 出一個 SLOT 算分器30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言