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

atc*_*way 4 .net architecture domain-driven-design

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

Function FindAllEmployees() As List(Of Employee)

Function GetAllEmployees() As List(Of Employee)
Run Code Online (Sandbox Code Playgroud)

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

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

Mar*_*ett 10

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

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

我可能会为这样的方法设置一个例外,GetAll即不带参数并返回 1:n 匹配,但在 0 上抛出异常。


Jas*_*zek 5

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