yojikのlog

yojikのブログです

データベースアプリケーションと状態

データベースアプリケーションというのは、多数の状態が同時に存在する中で、興味のある状態を抽出して次の状態に遷移させるという独立した処理を集めたアプリケーションです。そうすると、すべての状態を用意することができれば、処理の流れをテストする必要が低くなり、単独の処理をテストするだけである程度の品質が確保できるようになります。

上記の文章はテストについて述べたものだけど、設計に関するヒントでもあると思う。データと状態遷移ロジック(実際には状態遷移への制約を表すロジック)はほぼ一心同体。もしデータをオブジェクトにマッピングしているなら、その状態遷移ロジックはオブジェクト自身がもつ方が自然だろう。
そこにPofEAA::トランザクションスクリプトパターンではなく、PofEAA::ドメインモデルパターンを使う設計のメリットが出てくると思う。
ただし複数のオブジェクトに跨るバリデーションのようなロジックは、データとロジックを分離した方がよい気もする。そのようなロジックでは、どのオブジェクトに責務を振り分けるのか微妙になってくるから。ちょっと自分の意見が不安定。