In fast jedem Projekt, an dem ich mit einem Team arbeite, scheint sich das gleiche Problem einzuschleichen. Jemand schreibt UI-Code, der Daten benötigt, und schreibt eine Datenzugriffsmethode:
AssetDto GetAssetById(int assetId)
Eine Woche später arbeitet jemand anderes an einem anderen Teil des Antrags und benötigt ebenfalls einen, AssetDto
aber jetzt auch "Genehmiger" und schreibt Folgendes:
AssetDto GetAssetWithApproversById(int assetId)
Einen Monat später benötigt jemand einen Vermögenswert, der jedoch jetzt die "Fragen" (oder die "Eigentümer" oder die "laufenden Anfragen" usw.) enthält:
AssetDto GetAssetWithQuestionsById(int assetId)
AssetDto GetAssetWithOwnersById(int assetId)
AssetDto GetAssetWithRunningRequestsById(int assetId)
Und es wird noch schlimmer, wenn Methoden wie GetAssetWithOwnerAndQuestionsById
beginnen zu erscheinen.
Sie sehen das Muster, das entsteht: Ein Objekt wird an ein großes Objektdiagramm angehängt, und Sie benötigen verschiedene Teile dieses Diagramms an verschiedenen Stellen.
Natürlich möchte ich verhindern, dass es eine große Anzahl von Methoden gibt, die fast dasselbe tun. Ist es einfach eine Frage der Teamdisziplin oder gibt es ein Muster, mit dem ich dies verhindern kann? In einigen Fällen kann es sinnvoll sein, separate Methoden zu verwenden, dh es kann teuer sein, ein Asset mit laufenden Anforderungen zu erhalten, sodass ich diese nicht immer einbeziehen möchte. Wie gehe ich mit solchen Fällen um?
a = getAssetById(x)
a.questions usw. aufrufen und können sie dann aufrufen, ohne sie speziell zu laden, da das zugrunde liegende ORM-System sie für Sie lädt, wenn der Zugriff versucht wird.