7
ビジネスオブジェクト-コンテナまたは機能的?
これは私がSOに戻ってしばらく尋ねた質問ですが、ここでよりよく議論されるかもしれません... 私が働いているところで、私たちは何度もこの主題について行き来しており、健全性チェックを探しています。ここに質問があります:ビジネスオブジェクトはデータコンテナ(DTOに似ています)であるか、またはそのオブジェクトでいくつかの機能を実行できるロジックも含まれている必要があります。 例-顧客オブジェクトを取得します。おそらく、いくつかの一般的なプロパティ(名前、IDなど)が含まれますが、その顧客オブジェクトには関数(保存、計算など)も含める必要がありますか? 1行の推論では、オブジェクトを機能(単一責任プリンシパル)から分離し、ビジネスロジックレイヤーまたはオブジェクトに機能を配置します。 もう一方の推論では、いいえ、顧客オブジェクトがある場合は、Customer.Saveを呼び出して終了します。オブジェクトを消費している場合、顧客を救うために別のクラスについて知る必要があるのはなぜですか? 私たちの最後の2つのプロジェクトでは、機能からオブジェクトが分離されていましたが、新しいプロジェクトで議論が再び行われました。 どちらがより理にかなっており、なぜですか?