iT邦幫忙

2023 iThome 鐵人賽

DAY 16
0

Yes

More on CQS

我們試圖把命令與查詢從介面上分開,分開的原因是因為當狀態改變,其實會受到影響的狀態不只一個,會受到影響的查詢指令也不只一個。如果命令與查詢能在介面上分開,那這兩種行為便不會直接影響彼此,而是命令改變狀態,狀態改變查詢的回傳值,就能更鬆動地組裝功能了。

然而,也不一定所有命令與查詢都得分開,在網路 I/O 參與其中時,網路 I/O 的時間與資源也得考慮。例如,Client 下了一個命令後總是想看新狀態,這時,我們如果堅持不直接回傳新狀態,那 Client 還得再打一次 API,這樣也不見得划算。

此時,最外層介面我們可以二合一無妨,但裡面的實作我們依然可以先下命令,再下查詢。如此一來,就效能設計兩不誤了。

試寫 Reel

我們最後發現這裡有個業務概念:Reel 浮現了,但我們不確定現在抽好不好,於是我們就「試寫」一下,確定抽了以後,程式真的有變乾淨,這時 git reset,再用 TDD 的方式正式的寫一遍。


上一篇
Day 15 不改變狀態的 Query 接口
下一篇
Day 17 大步重構出 單一 Reel 物件
系列文
『請你跟我這樣做』- 30 天 TDD 出一個 SLOT 算分器30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言