質問: .Net Core 3.1 + Prismを用いて開発を行う場合、 Module毎に処理を分ける場合があると思います。 その際、PrismTemplatePackで初期生成されるModuleは「View」「ViewModel」フォルダとその中に1つのクラス + フォルダ外に「Moduleクラス」の3つが存在する状態になっています。 これはModuleに分ける場合、モデルクラスをModuleに含まないのがベストプラクティスであることを示していますか? そうではない場合、例えば新たに「Module1」プロジェクトを追加したとして「View」「ViewModel」フォルダがあるところに「Models」「Interfaces」フォルダを追加したとします。 さらに、Interfacesにロジックのインターフェース、Modelsにインターフェースの実装を追加します。 この状態で、別のモジュールからインターフェースを経由してロジックにアクセスするとしたら、場合によっては相互参照を必要とする状況が発生します。 その為、Models, Interfacesは別プロジェクトに切り出してModule1はViewとViewModelのみを持ったモジュールとしたとします。 これを複数のロジック、例えばユーザー管理プログラムとした場合、「ログイン機能」「ユーザー情報編集機能」など多数のModuleに分割しようとした場合、LoginViewModule, LoginLogicModuleなど、機能毎に2つのモジュールを必要とします。おそらくこの設計は間違っているのだと思います。 相互参照を回避した、モジュール分けのベストプラクティスはどういった構成ですか?
回答: ベストプラクティスは分かりません。 ただ一点だけの指摘です。 LoginLogicがModule(機能)によらず必要ならLoginLogicはModuleじゃなくて Service(LoginLogicService or LoginService) として実装するのが順当かと思われます。 Serviceなら置くところあるし、わざわざインタフェイス置き場まで作って くれてるのに使わない手はないのでは?