副作用とドメインを切り離す
#設計 #設計原則 #モデリング
3層アーキテクチャの基本
入力-処理-出力の処理を独立させる
入力、出力がI/O
処理がドメイン
「それがなにか」(What)と「どうするか」(How)の分離
永続化(ストレージ)層と状態遷移は切り離す
ビジネスロジックの詳細を、ドメインモデルまたは副作用のない関数(Side-Effect-Free Functions)に閉じ込める
ドメインモデルの内部には、永続化にまつわる情報を混入させるべきではない
集約を永続化の関心事から切り離す
コアなデータ構造を変えることなく継続的な変化に適応するためのCQS
既存のI/Oに変化を加えることなく処理のみを変更できる
リグレッション管理が楽になる
ユースケースの増加にスケールする
プレゼンテーション層も同じことが言える
=きちんと設計されたテストケースはフラクタル構造である
関心の分離はドメインとプレゼンテーションから考える(PDS)
Reactの副作用とは
Redux, The Composable Architecture
Effect Systemも本質は同じ
関連
CQRSの時空分割と観測