私がチームで取り組んでいるほぼすべてのプロジェクトで、同じ問題が侵入しているようです。誰かがデータを必要とするUIコードを書き、データアクセスメソッドを書きます。
AssetDto GetAssetById(int assetId)
1週間後、他の誰かがアプリケーションの別の部分で作業してAssetDto
いて、「承認者」を含む必要がありますが、次のように書きます:
AssetDto GetAssetWithApproversById(int assetId)
1か月後、誰かがアセットを必要としていますが、現在は「質問」(または「所有者」または「実行中のリクエスト」など)が含まれています。
AssetDto GetAssetWithQuestionsById(int assetId)
AssetDto GetAssetWithOwnersById(int assetId)
AssetDto GetAssetWithRunningRequestsById(int assetId)
そして、そのようなメソッドGetAssetWithOwnerAndQuestionsById
が出現し始めると、さらに悪化します。
現れるパターンが表示されます。オブジェクトは大きなオブジェクトグラフにアタッチされており、このグラフのさまざまな部分をさまざまな場所に配置する必要があります。
もちろん、ほとんど同じことをするメソッドがたくさんあるのを防ぎたいです。それは単にチームの規律の問題ですか、それともこれを防ぐために使用できるパターンがありますか?場合によっては、個別のメソッドを使用することが理にかなっている可能性があります。つまり、実行中のリクエストでアセットを取得するのはコストがかかるため、常にこれらを含めたくありません。そのような場合の対処方法は?
a = getAssetById(x)
a.questionsなどを呼び出すことができます。アクセスが試行されると、基礎となるORMシステムがそれをロードするため、それらを特にロードする必要はありません。