En casi todos los proyectos en los que trabajo con un equipo, el mismo problema parece aparecer. Alguien escribe código de interfaz de usuario que necesita datos y escribe un método de acceso a datos:
AssetDto GetAssetById(int assetId)
Una semana después, alguien más está trabajando en otra parte de la aplicación y también necesita un AssetDto
'aprobadores' pero ahora incluye y escribe lo siguiente:
AssetDto GetAssetWithApproversById(int assetId)
Un mes después, alguien necesita un activo, pero ahora incluye las 'preguntas' (o los 'propietarios' o las 'solicitudes en ejecución', etc.):
AssetDto GetAssetWithQuestionsById(int assetId)
AssetDto GetAssetWithOwnersById(int assetId)
AssetDto GetAssetWithRunningRequestsById(int assetId)
Y empeora aún más cuando GetAssetWithOwnerAndQuestionsById
comienzan a aparecer métodos como el .
Verá el patrón que emerge: un objeto está unido a un gráfico de objetos grandes y necesita diferentes partes de este gráfico en diferentes ubicaciones.
Por supuesto, me gustaría evitar tener una gran cantidad de métodos que hacen casi lo mismo. ¿Es simplemente una cuestión de disciplina de equipo o hay algún patrón que pueda usar para evitar esto? En algunos casos, puede tener sentido tener métodos separados, es decir, obtener un activo con solicitudes en ejecución puede ser costoso, por lo que no quiero incluirlos todo el tiempo. ¿Cómo manejar tales casos?
a = getAssetById(x)
y luego puede llamar a a.preguntas, etc. sin cargarlas específicamente, ya que el sistema ORM subyacente lo carga por usted cuando se intenta el acceso.