little-hands/ddd-q-and-a

昨今 class の概念を持たない言語も増えてきていて、 class-less なケースでの DDD をどう導入していくべきか悩ましく思うことが多々あります。例えば TypeScript では class を使っても( Angular など...

Opened this issue · 0 comments

Question

昨今 class の概念を持たない言語も増えてきていて、 class-less なケースでの DDD をどう導入していくべきか悩ましく思うことが多々あります。

例えば TypeScript では class を使っても( Angular など)使わなくても( React など)書けるよとなっていますが、後者の class があまり推奨されてないケースで無理に class を使いたくないので、エンティティに相当する型を第一引数にして何らか返す関数や、逆にそれを生成する関数をファイルで束ねる程度のことしかやれておらず、本当にこれで良いのか不安に思うことがあります。(実際の例も class を使ったものばかりで、そのまま参考にすることもできず)

何か class を使わないケースにおける DDD の参考事例などはあるでしょうか?あるいは松岡さんは class を使わない DDD についてどのようにお考えでしょうか?

Answer

ドメインオブジェクトをクラスで実装する狙いは主に2つで、それが達成できれば逆にクラスを使わなくても構いません。1つは、モデリングした成果物(ドメインモデル図)と、実装の形を乖離させないことです。もう一つは、保持する情報とメソッドを関連の強いものでまとめる(凝集度を高める)ことで保守性の高いコードにすることです。
classを使わないのであれば、モデルの段階からそれを想定した表現方法にして、その成果物と実装の形を揃える試みをできるといいかもしれません。是非検討してみてください。
(参考事例はちょっと知っているものがありませんm(_ _)m)