存储库或数据访问方法中的方法的“查找”和“获取”动词之间有什么区别?

时间:2011-10-10 21:07:57

标签: .net architecture domain-driven-design

无论是将Repository模式与Interface一起使用还是仅在应用程序中实现DataAccess方法,我经常会在方法描述之前看到带有“Get”或“Find”动词的方法。我在区分(2)方面有点挣扎,因为在查看DDD存储库示例或使用类似命名约定的任何其他架构时,我看到了相互矛盾的示例。例如,看看以下内容:

Function FindAllEmployees() As List(Of Employee)

Function GetAllEmployees() As List(Of Employee)

让我们不要过分关注“员工”的主题,这只是一个例子;它可能是任何东西。我真的很感兴趣,如果有一些关于何时在开头描述一个带有'Get'和'Find'动词的方法的指南。

任何人都可以解释这个或详细说明吗?谢谢!

2 个答案:

答案 0 :(得分:5)

对我来说,FindAllEmployees表示它可能接受用于过滤结果的谓词,而GetAllEmployees会这样做,返回完整列表。

答案 1 :(得分:3)

Get如果不存在则抛出错误(通常只返回1),Find返回null(或空IEnumerable)。

不确定这是否具有普遍性 - 但对我来说非常清楚。 GetByIdGetByName等假定存在匹配(通常是单个匹配)。 FindByEmailFindByDepartment不要假设,通常返回0:n匹配。

我可能会对GetAll之类的方法做一个异常,它不接受任何参数并返回1:n匹配,但会在0上抛出异常。

相关问题