サービスごとのDTOの利用
僕はどちらかといえば積極的にDTOを使いません。特にサービスごとにDTOを作るようなことは避けます。しかしこのようなDTOを利用するケースはそれなりにあってメリットをいろいろ考えました。結論としては
『DTOを使う最も大きな理由は画面とビジネスロジックに大きく分けて初期設計の複雑さを小さくすること』
これが導入の大きな動機だと考えました。もちろん共通化が阻害されてしまうけど、設計観点が限定され開発しやすい無難な選択がメリットということでしょう。
ちなみに、一律に導入するのではなく処理パターンに分類してDTOとドメイン層オブジェクト(おもにエンティティ)の適材・適所に利用を考えた方がベターだと思っています。
処理パターン | エンティティ | DTO |
マスタメンテ処理 | ◎ | △ |
トランザクション処理 | ○ | ◎ |
検索 | ○ | ○ |