How to prevent duplicate data access methods that retrieve similar data?

Posted by Ronald Wildenberg on Programmers See other posts from Programmers or by Ronald Wildenberg
Published on 2012-09-27T07:22:19Z Indexed on 2012/09/27 9:50 UTC
Read the original article Hit count: 284

In almost every project I work on with a team, the same problem seems to creep in. Someone writes UI code that needs data and writes a data access method:

AssetDto GetAssetById(int assetId)

A week later someone else is working on another part of the application and also needs an AssetDto but now including 'approvers' and writes the following:

AssetDto GetAssetWithApproversById(int assetId)

A month later someone needs an asset but now including the 'questions' (or the 'owners' or the 'running requests', etc):

AssetDto GetAssetWithQuestionsById(int assetId)
AssetDto GetAssetWithOwnersById(int assetId)
AssetDto GetAssetWithRunningRequestsById(int assetId)

And it gets even worse when methods like GetAssetWithOwnerAndQuestionsById start to appear.

You see the pattern that emerges: an object is attached to a large object graph and you need different parts of this graph in different locations.

Of course, I'd like to prevent having a large number of methods that do almost the same. Is it simply a matter of team discipline or is there some pattern I can use to prevent this? In some cases it might make sense to have separate methods, i.e. getting an asset with running requests may be expensive so I do not want to include these all the time. How to handle such cases?

© Programmers or respective owner

Related posts about design

Related posts about design-patterns