【发布时间】:2011-03-29 02:00:39
【问题描述】:
鉴于 Company、Employee 和 Car 类,检索与 Company 或 Employee 关联的 Cars 的方法的首选做法是什么?
Employee.GetCars(params...)
Company.GetCars(params...)
或者:
Cars.GetByEmployee(params...)
Cars.GetByCompany(params...)
第一种方法是我常用的方法,对我来说似乎总是最直观的。但是在看到使用第二种方法的大型代码库之后,我不得不承认它在我身上不断增长。我真正喜欢第二种方法的两点是:
- 它将所有
Car相关的代码组合到一个文件中,使代码更加模块化,更易于维护。 - 将返回值为
Car(在本例中更像List<Car>)的任何方法归入Car类有一个直观的逻辑。
是否有涵盖此内容的最佳实践?
【问题讨论】:
-
选择一组关于这些事情的约定和规则,并使它们在呈现相同决定的每个类似场景中保持一致。决定的结果相对不重要。
-
另外,取决于您要跟踪的内容,如果员工经常有 4 辆车,我会使用 Employee.GetCars() 因为它从一开始就缩小了范围,但是如果您有数百万员工和很少的汽车,我会做 Cars.GetByEmployee 因为汽车将是较小的集合。我想我是说我更喜欢: Subset.GetSuperset() 所以更窄的选择是类。
-
@Jimmy:除非您喜欢雇用有感知的车辆,否则我不一定将 Cars 称为员工的子集,但我同意您提出的一般观点。
标签: c# design-patterns oop