fat model になってしまったコード。本来は何処に配置すべきか?

デザインパターンを読んだときは、場合ごとに振る舞いを切り出し委譲してしまう方法、オブジェクト群にアクセスする方法とアクセスして**するを分離する方法、オブジェクト同士の仲介役を用意する方法、などなどを知った。

DDDを読んだときは、サービスやエンティティに何となく記述した振る舞いを Value Objectまで 濾過して、簡潔明瞭に持っていくのも選択肢だと知った。変化する状態を保持せず、Commandタイプのメソッドを消し去り、少ない要素で表現するのが良い選択であれば。DDDを読む以前、Value Objectは、int、Stringなどの基本データ型の拡張と考えていたが、読んだ以降は、物理学者が数学という道具を使って物理現象の本質を簡潔明瞭に記述する(のに美学を感じる)ように、プログラマーが対象ドメインの振る舞いの本質をValue Objectで簡潔明瞭に記述する(のに美学を感じる)ような側面があることを知った。
(ただ、状態を保持する世界と状態を保持しない世界の切れ目を見つける方法は、まだ解らない。)

DCI を 知ったときは、ロール(同士)の振る舞い自体を切り出してしまって、後でデータとくっつけてしまう方法を知った。このアプローチを選択するにはプログラミング言語を選んでしまうが。
(ただ、ユーザーのメンタルモデルを出発点にして、ある舞台のシチュエーションで役者と役者同士の振る舞いを思い描きコードで表し、後で必要なデータ構造との紐付けするようにつくる感覚はない。)

選択肢は色々ある。他にもあるはず。選択のメリット/デメリットで評価、ソートしてベターな選択