获取数据的方法名称

Jas*_*son 94 methods naming-conventions

警告:这是我发布的一个不太严肃的问题/讨论......但我愿意打赌,大多数开发人员都在考虑这个"问题"......

一直想得到关于从某个地方获取数据并返回它的方法的命名约定的其他意见......

大多数方法名称都有点简单明了...... SaveEmployee(),DeleteOrder(),UploadDocument().当然,对于类,你最有可能使用短格式...分别保存(),删除(),上传().

但是,我一直在努力采取初步行动......如何获取数据.似乎对于每个项目,我最终都会在不同的命名约定之间跳跃,因为我对我使用的最后一个项目感到非常满意.据我所知,这些是可能性 - >

  • GetBooks()
  • FetchBooks()
  • RetrieveBooks()
  • FindBooks()
  • LoadBooks()

你有什么想法?

小智 118

这完全是关于一致的语义 ;

在您的问题标题中,您使用获取数据.这是非常普遍的,你需要定义什么感觉越来越手段语义显著明确的方式.我提供以下示例,希望在考虑命名事项时让您走上正确的轨道.

  1. getBooks() 当你获得与一个对象相关的所有书籍时,它意味着已经定义了该集合的标准以及它们来自哪里是一个隐藏的细节.
  2. findBooks(criteria) 是什么时候试图根据方法调用的参数找到书籍的子集,这通常会被不同的搜索条件重载
  3. loadBooks(source) 是从外部源加载,如文件或数据库.
  4. 我不会用取/检索,因为他们太含糊,把事情混为一谈GET并有与术语相关丝毫不含糊语义.

示例: fetch意味着某些实体需要去获取远程的东西并将其恢复.狗取得一根棍子,并且检索fetch的同义词,其中添加的语义也可能是你之前拥有的东西.得到是的代名词获得,以及这意味着你有什么独有并没有其他人可以同时获得它.

语义非常重要:

语言学和逻辑学的分支与意义有关

这些注释证明了像getfetch这样的通用术语没有特定的语义,并且由不同的人进行不同的解释.为术语选择语义,记录语义不清晰并与其使用一致意味着什么.

具有模糊或含糊不清的含义的词语由于他们的偏见和偏见基于他们的个人观点而被不同的人赋予不同的语义,并且永远不会结束.

  • publisher.getBooks()将是首选的方式,其中publisher是发布者的特定实例.Library.getBooks(publisher),其中publisher实现了BookSearchCriteria接口.与Library.getBooks(作者)相同,其中author实现了BookSearchCriteria接口.您还逻辑上将Library.getPublishers()作为工厂方法 (5认同)
  • 我要补充一点,如果要从数据库中检索数据,我将使用fetch / retrieve (3认同)
  • 谢谢你的回答.肯定会增加一些清晰度.从本质上讲,您说的是特定过滤器检索的方法应该与对象保持一致.以什么方式使用界面?例如,BookSearchCriteria接口.你能提供一些示例代码吗? (3认同)
  • 当数据**访问时间**为**低**时,通常命名类似于`fetch`,即在同一设备上,来自本地数据库,来自内存。`load`,或`download`,如果访问时间**更高* *,来自互联网,外部数据库,来自文件 (2认同)

Nic*_*sen 12

老实说,您应该与您的团队决定使用哪种命名约定.但为了好玩,让我们看看你的思路是什么来决定这些:

  • GetBooks()

这个方法属于一个数据源,我们不关心它是如何获取它们的,我们只想从数据源中获取它们.

  • FetchBooks()

您将数据源视为猎犬,获取您的图书是他的工作.我想你应该自己决定一下他能装到嘴里的人数.

  • FindBooks()

您的数据源是图书管理员,将使用Dewey Decimal系统查找您的图书.

  • LoadBooks()

这些书属于某种"电子书包",必须装入其中.务必在加载后调用ZipClosed()以防止丢失它们.

  • RetrieveBooks()

我一无所有.

  • 接受的答案并没有很好地区分“get”和“fetch”以及这个答案。Fetch 意味着它必须由其他人完成,因为它需要一些时间或需要一些专业知识才能完成,而 get 意味着它是即时可用的逐字逐字或“现成的”。 (4认同)

Jon*_*onH 8

答案就是坚持你所熟悉的并且是一致的.

如果你有一个barnes和贵族网站并且你使用GetBooks(),那么如果你有另一个像Movie实体的项目使用GetMovies().无论你和你的团队喜欢什么,都是一致的.

  • 至少你的拼写错误一致.;-) (21认同)
  • 非常一致与一致...:) (3认同)
  • 一点也不冒犯……谢谢你指出。 (2认同)