1/20

引数オブジェクト(Parameter Object)とデータ変換オブジェクト(DTO)は同じものなのか、違うものなのかをうまく言葉にできず悩んでます。良い説明ありますでしょうか?

定義する人によって異なります。 大事なのは、そのクラスの責務(それは何を表す/何をするクラスなのか)を考えることです。引数オブジェクトは責務が明確ですね。特定のメソッドの引数を表すオブジェクトですね。名前もそのままで良さそうです。 では、データ転送オブジェクト(DataTransferObjectなので変換ではなく転送ですね)は何を表す、何をするオブジェクトでしょうか?おそらく、ここが曖昧ですね。転送とは何を表すのでしょう。これは、定義しないと定まらないのです。だからこそ、プロジェクトにおいてきちんと意味を定める必要があります。 例として、あくまで私が普段使用している定義では、オニオンアーキテクチャでユースケース層からプレゼンテーション層に値を受け渡すオブジェクトにDTOという名称をつけています。 https://gyazo.com/8232196108a851d6120f8fb09921bf27 (モデリング/実装ガイド https://little-hands.booth.pm/items/1835632 「7章 ユースケース層の実装」より) これは一例なので、プロジェクトごとにきちんと定義をする、というのがとにかく大事なことです。

スポンサーリンク

スポンサーリンク

スポンサーリンク