コマンドクエリ分離は何故大事?
Martin Fowlerによれば、副作用をもたらす関数とそうでない関数を分離しておくと、副作用をもたらさないクエリについては何の心配もなく使えるようになるという。
なるほど、副作用というのは避けられないものだけど、だからこそ「どの関数が副作用を持ち、持たないのか」をはっきりさせておくと、プログラマの認知負荷が下がって両種類の関数を適切に使うことができ、ゆくゆくは「メンテナブルでバグが少ないコード」に繋がっていくということか...
避けられないものや困難なものをあるがままに受け止めて、それをどのように扱ったらメンテしやすくなのかと観点なのかな。
機能を拡張するとき、既存の関数を使うことはよくあることだけど、この時に関数の使い方を間違えるとバグが生まれやすい。
大雑把に「コマンドかクエリか」という観点で関数を理解していくと確かに分かりやすそう👍
ここからはふと思いついた屁理屈👇
HTTPリクエスト - レスポンスってコマンドとクエリが分離されてないかも?
POST, PATCH(PUT), DELETEについては副作用をもたらしつつ、レスポンスが帰ってくるから。
コマンドクエリ分離はリクエスト層の話ではなく、アプリケーションのレベルでの話だと理解しつつ。