Trong hầu hết mọi dự án tôi làm việc với một nhóm, cùng một vấn đề dường như xuất hiện. Ai đó viết mã UI cần dữ liệu và viết phương thức truy cập dữ liệu:
AssetDto GetAssetById(int assetId)
Một tuần sau, một người khác đang làm việc trên một phần khác của ứng dụng và cũng cần một AssetDto
nhưng bây giờ bao gồm cả 'người phê duyệt' và viết như sau:
AssetDto GetAssetWithApproversById(int assetId)
Một tháng sau, ai đó cần một tài sản nhưng bây giờ bao gồm 'câu hỏi' (hoặc 'chủ sở hữu' hoặc 'yêu cầu đang chạy', v.v.):
AssetDto GetAssetWithQuestionsById(int assetId)
AssetDto GetAssetWithOwnersById(int assetId)
AssetDto GetAssetWithRunningRequestsById(int assetId)
Và nó thậm chí còn tồi tệ hơn khi các phương pháp như GetAssetWithOwnerAndQuestionsById
bắt đầu xuất hiện.
Bạn thấy mô hình nổi lên: một đối tượng được gắn vào biểu đồ đối tượng lớn và bạn cần các phần khác nhau của biểu đồ này ở các vị trí khác nhau.
Tất nhiên, tôi muốn ngăn chặn việc có một số lượng lớn các phương thức gần như giống nhau. Nó chỉ đơn giản là một vấn đề kỷ luật nhóm hoặc có một số mô hình tôi có thể sử dụng để ngăn chặn điều này? Trong một số trường hợp, có thể có các phương pháp riêng biệt, nghĩa là có được một tài sản với các yêu cầu đang chạy có thể tốn kém vì vậy tôi không muốn bao gồm các phương thức này mọi lúc. Làm thế nào để xử lý các trường hợp như vậy?
a = getAssetById(x)
và sau đó có thể gọi a.questions, v.v. mà không cần tải chúng một cách cụ thể vì hệ thống ORM cơ bản sẽ tải nó cho bạn khi cố gắng truy cập.