Teeda で Service を使う際の方針(その2)

Teeda で Service を使う際の方針について、チャットとか含めて多くの意見を頂いたので一度、論点を整理してみました。


1.そもそもServiceは使うべきか?
 A. 使う
 B. 使わない
 C. ある条件下で使う
 D. 分からない


2.Serviceメソッドの引数にPageを使う是非について
 A. Pageを使うのはOK
 B. Pageを使うのはNG
 C. 分からない


3.Serviceの粒度について
 A. Pageごと
 B. SubApplicationごと
 C. 分からない


4.Serviceにインターフェースは必要か?
 A. 必要
 B. 不要
 C. 分からない


5.Dxoの呼び出し場所
 A. Page
 B. Service
 C. PageとServiceのどちらでもOK
 D. 分からない



ちなみに、現時点での私の考えは次の通りです。

1-D
正直、これは迷っています。


2-A
Dtoの代わりにPageを使う方針でずっと考えていたが、そもそもServiceメソッドの引数でDtoを使う機会は「参照系、かつ、パラメータ引数が多い場合」であるため意外と少ないと判断。利用頻度が低いのであれば、Dtoのデメリットを受容する方針もOKと考えました。(Pageを引数に使う場合のデメリットも無視しがたい。)


3-B
HTMLとTABLEの中間の粒度なので、丁度良い感覚があります。


4-B
ただ、インターフェースが無いとテストが困難になる話もあるが、基本的に次の方法でテストすれば十分ではないかと思っています。

  • ServiceはExcelを使ってDB経由でテストする
  • Pageは必要に応じてServiceを継承したモックをセットしてテストする


5-A
「PageをServiceに依存させないポリシー」と「プレゼンテーションモデルではなく、ドメインモデルをプレゼンテーション層に引き渡すことをServiceの責務に含める」を考えると、Dxoの置き場所はPageかなぁ。