In quasi tutti i progetti su cui lavoro con un team, lo stesso problema sembra insinuarsi. Qualcuno scrive codice UI che richiede dati e scrive un metodo di accesso ai dati:
AssetDto GetAssetById(int assetId)
Una settimana dopo qualcun altro sta lavorando su un'altra parte dell'applicazione e necessita anche di un AssetDto
, ma ora include "approvatori" e scrive quanto segue:
AssetDto GetAssetWithApproversById(int assetId)
Un mese dopo qualcuno ha bisogno di una risorsa, ma ora include le "domande" (o "proprietari" o "richieste in esecuzione", ecc.):
AssetDto GetAssetWithQuestionsById(int assetId)
AssetDto GetAssetWithOwnersById(int assetId)
AssetDto GetAssetWithRunningRequestsById(int assetId)
E diventa ancora peggio quando iniziano ad apparire metodi come GetAssetWithOwnerAndQuestionsById
.
Vedi il modello che emerge: un oggetto è attaccato ad un grande oggetto grafico e hai bisogno di parti diverse di questo grafico in posizioni diverse.
Naturalmente, vorrei evitare di avere un gran numero di metodi che fanno quasi la stessa cosa. È semplicemente una questione di disciplina di squadra o c'è qualche schema che posso usare per prevenire questo? In alcuni casi potrebbe essere opportuno disporre di metodi separati, ovvero ottenere una risorsa con richieste in esecuzione può essere costosa, quindi non voglio includerle tutte le volte. Come gestire questi casi?