获取数据的方法名称[关闭]

     2023-02-23     145

关键词:

【中文标题】获取数据的方法名称[关闭]【英文标题】:Method names for getting data [closed] 【发布时间】:2011-01-09 15:41:20 【问题描述】:

警告:这是我发布的一个不太严重的问题/讨论......但我敢打赌,大多数开发人员已经考虑过这个“问题”......

一直想就从某处获取数据并返回数据的方法的命名约定获得其他意见...

大多数方法名称都有些简单明了... SaveEmployee()、DeleteOrder()、UploadDocument()。当然,对于类,您很可能会分别使用缩写形式...Save()、Delete()、Upload()。

但是,我一直在为最初的行动而苦恼……如何获取数据。似乎对于每个项目,我最终都会在不同的命名约定之间跳跃,因为我对我使用的最后一个命名约定并不满意。据我所知,这些是可能性-->

GetBooks() FetchBooks() RetrieveBooks() FindBooks() Lo​​adBooks()

你的想法是什么?

【问题讨论】:

【参考方案1】:

一切都是为了一致的semantics;

在您的问题标题中,您使用获取数据。这是极 一般在某种意义上,您需要定义 getting 的含义 语义上显着明确的方式。我提供以下 希望在思考时让您走上正轨的示例 命名事物。

    getBooks() 是当你得到 与一个相关的所有书籍 对象,它意味着集合的标准是 已经定义,它们来自哪里是一个隐藏的细节。 findBooks(criteria) 是什么时候试图找到一个子集 基于参数的书籍 方法调用,这通常会 因不同的搜索而超载 标准 loadBooks(source) 是你的时候 从外部源加载, 像文件或数据库。 我不会使用 fetch/retrieve,因为它们太模糊,与 get 混为一谈,并且没有与术语相关的明确语义。

示例: fetch 暗示某个实体需要去获取远程的东西并将其带回来。狗会拿一根棍子,retrievefetch 的同义词,带有附加的语义,即您可能之前也拥有过这东西。 get 也是 obtain 的同义词,这意味着您拥有某物的独占权,并且没有其他人可以同时获得它。

Semantics 非常重要:

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

cmets 证明了像 getfetch 这样的通用术语具有 没有特定的语义并且被不同的解释不同 人们。为一个术语选择一个语义,记录它的意图 暗示如果语义不明确并且与其使用一致。

含义模糊或模棱两可的词,由于基于个人观点的偏见和成见,被不同的人赋予了不同的语义,并且永远不会有好的结局。

【讨论】:

我要补充一点,如果要从数据库中检索数据,我会使用 fetch/retrieve 嗯。你会区分通配符标准和特定标准吗?例如,在查找特定出版商的书籍时,您会使用 FindBooks(publisher) 吗?或者 GetBooksFromPublisher(publisher)? publisher.getBooks() 将是首选方式,其中发布者是发布者的特定实例。 Library.getBooks(publisher) 其中发布者实现了 BookSearchCriteria 接口。与 Library.getBooks(author) 相同,其中作者实现了 BookSearchCriteria 接口。从逻辑上讲,您还可以将 Library.getPublishers() 作为工厂方法 感谢您的回答。绝对增加了一些清晰度。从本质上讲,您是说特定过滤器检索的方法应该保留在对象中。接口会以什么方式使用?例如,BookSearchCriteria 接口。能否提供一些示例代码? 当数据访问时间 时,通常命名类似于fetch,即在同一设备上,来自本地数据库,来自内存。@987654331 @,或download,如果访问时间更高,来自互联网、外部数据库、来自文件【参考方案2】:

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

GetBooks()

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

FetchBooks()

您将数据源视为猎犬,他的工作就是取回您的书籍。我想你应该自己决定他一次能塞多少个。

FindBooks()

您的数据源是图书管理员,将使用杜威十进制系统查找您的图书。

Lo​​adBooks()

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

RetrieveBooks()

我什么都没有。

【讨论】:

接受的答案没有很好地区分“get”和“fetch”以及这个答案。 Fetch 意味着它必须由其他人完成,因为这需要一些时间或需要一些专业知识才能完成,而 get 意味着它是即时可用的,并且可以逐字或“现成”。 我今天也无法接受接受的答案。对于我的项目(基于 React/Redux),我认为区分从 Redux 存储、应用程序数据库和第三方 API 提取的数据非常重要。做到这一点肯定会有助于未来的可读性。最初的开发人员使用add 写入数据库和写入存储区。现在我正试图将它们分开,这很痛苦。【参考方案3】:

答案就是坚持你觉得舒服并始终如一。

如果您有一个贵族网站并使用 GetBooks(),那么如果您有另一个项目,如电影实体,请使用 GetMovies()。因此,无论您和您的团队喜欢什么,并且始终如一。

【讨论】:

至少你在拼写错误上是一致的。 ;-) 与consistant非常一致...:) 一点也不冒犯...谢谢您指出。【参考方案4】:

不清楚“获取数据”的含义。从数据库?一份文件?内存?

我对方法命名的看法是,它的作用是消除任何歧义,理想情况下是查找文档的需要。我相信即使以更长的方法名称为代价也应该这样做。根据研究,大多数中级以上的开发人员能够以驼峰式阅读多个单词。使用 IDE 和自动完成,编写长方法名也不是问题。

因此,当我看到“fetchBooks”时,除非上下文非常清楚(例如,名为 BookFetcherFromDatabase 的类),否则它是模棱两可的。从哪里取? fetch 和 find 有什么区别?您还面临一些开发人员会将语义与某些关键字相关联的问题。例如,获取数据库(或内存)与加载(从文件)或下载(从 Web)。

我宁愿看到类似“fetchBooksFromDatabase”、“loadBookFromFile”、“findBooksInCollection”等的东西。它不那么显眼,但是一旦你超过了长度,就很清楚了。阅读本文的每个人都会立即了解您正在尝试做的事情。

【讨论】:

fetchBooksFromDatabase 的问题是当您想要分解/概括和 fetchBooks 时,可能会从 XML 中提取一些数据。我也喜欢细节,但是你会发现自己在不同的函数names中分离了相同的功能。而且那位先生并不酷! 我认为 Get 与 Find 之间的区别往往很明显,但我想知道有关 Get 与 Fetch 的问题。地狱..有区别吗? @JonH:我同意你的看法。但是,如果您事先知道您将有不同类型的 fetch,您将在类命名中对其进行编码(以便您可以从上下文中解释含义,例如 DatabaseConnector 与 XmlConnector)。 @Jason:因为“getter”无处不在(并且是 JavaBeans 等框架的一部分),许多程序员倾向于将它们视为访问数据字段的几乎透明的方式。另一方面,“Fetch”向一些程序员表明更长时间的访问,包括从一个地方到另一个地方的数据传输(a-la CPU 获取)或数据库获取。例如,Hibernate 的查询语言有一个 Fetch 结构。开发人员经常根据他们对名称的期望而不是通过阅读文档来使用方法,因此避免发送错误信号至关重要。【参考方案5】:

在 OO (C++/Java) 中,我倾向于使用 getSomething 和 setSomething,因为我经常从表示该数据对象的类中获取私有属性或设置它 - getter/setter 对。另外,Eclipse 会为您生成它们。

我倾向于仅在我指的是文件时才使用 Load - 例如“加载到内存”中,这通常意味着加载到原语、结构 (C) 或对象中。我使用网络发送/接收。

如上所述,一致性就是一切,包括跨开发者。

【讨论】:

输入城市名称并获取可能城市列表的 API? [关闭]

】输入城市名称并获取可能城市列表的API?[关闭]【英文标题】:APItotypecitynameandgetalistofpossiblecities?[closed]【发布时间】:2012-08-0505:34:24【问题描述】:我需要知道我的用户在哪个城市。我不能使用常规的文本输入,因为有相似... 查看详情

有啥方法可以获取我的朋友或朋友的朋友的聊天数据? [关闭]

】有啥方法可以获取我的朋友或朋友的朋友的聊天数据?[关闭]【英文标题】:Isthereanywaywecangetchatdataofmyfriendsorfriendsoffriends?[closed]有什么方法可以获取我的朋友或朋友的朋友的聊天数据?[关闭]【发布时间】:2013-04-0612:19:12【问... 查看详情

如何使用离子框架在选择选项中获取带有图像和名称的下拉菜单? [关闭]

】如何使用离子框架在选择选项中获取带有图像和名称的下拉菜单?[关闭]【英文标题】:HowdoIgetthedropdownwithimageandnameinselectoptionusingionicframework?[closed]【发布时间】:2017-01-0509:44:09【问题描述】:我想在带有国旗的选择选项中列... 查看详情

ado.net总结-connection(武器库地址)(代码片段)

...造方法,数据库连接字符串作为参数Connectionstring属性,获取或设置数据库的连接串State属性,获取当前数据库的状态,由枚举类型Connectionstate为其提供值ConnectionTimeout属性,获取在尝试连接时终止尝试并生成错误之前所等待的时... 查看详情

从mp3获取没有元数据(ID3)的数据的方法[关闭]

】从mp3获取没有元数据(ID3)的数据的方法[关闭]【英文标题】:waytogetdatawithoutmetadata(ID3)frommp3[closed]【发布时间】:2012-10-3012:01:30【问题描述】:有什么方法可以使用Objective-C、C++或C从mp3文件中获取数据删除的元数据(例如,ID... 查看详情

如何将数据从文档显示到 iphone 表格视图? [关闭]

...我必须对名称进行硬编码,或者有其他方法可以从文档中获取名称,然后显示在UITableView?【问题讨 查看详情

部分类共享相同的方法名称[关闭]

】部分类共享相同的方法名称[关闭]【英文标题】:Partialclasssharingsamemethodnames[closed]【发布时间】:2014-11-2711:35:34【问题描述】:如果一个部分类有相同的方法名但不同的类型我会得到一个错误,对吧?publicpartialclassEmployeepublicin... 查看详情

获取以某些字母开头的名称列表[关闭]

】获取以某些字母开头的名称列表[关闭]【英文标题】:Getalistofnameswhichstartwithcertainletters[closed]【发布时间】:2012-04-2510:28:25【问题描述】:我需要实现一个函数,该函数将一个名称(字符串)列表作为参数,另一个将字符列表... 查看详情

元数据(代码片段)

...据库信息的数据。  ①由Connection对象的getMetaData()方法获取的是DatabaseMetaData对象。  ②由PreparedStatement对象的getParameterMetaData()方法获取的是ParameterMetaData对象。  ③由ResultSet对象的getMetaData()方法获取的是ResultSetMetaData对象... 查看详情

如何获取 NSMutableString 数据并将其放在不同的字符串中? [关闭]

】如何获取NSMutableString数据并将其放在不同的字符串中?[关闭]【英文标题】:HowdoIgettheNSMutableStringofdataandplaceitindifferentstring?[closed]【发布时间】:2013-03-1519:56:34【问题描述】:我有一个包含数据的方法。我想创建该数据的字符... 查看详情

json 按名称查找对象并获取其值(api)[关闭]

】json按名称查找对象并获取其值(api)[关闭]【英文标题】:jsonfindobjectbynameandgrabitsvalue(api)[closed]【发布时间】:2020-03-3000:51:00【问题描述】:我正在抓取Steam数据并将其保存到名为body的变量中现在我想要做的是找到total_kills它... 查看详情

递归方法:对于树形结构的表,根据当前数据获取无限极的父级名称

递归返回格式如:一级>二级>三级 privatestringGetPerUserGroup(stringgroupid,stringusergroupname){stringstr=usergroupname;if(Convert.ToInt32(groupid)>0){Community.Model.USER_GROUPgt=BUSER_GROUPExtBLL.Sel 查看详情

我可以根据雪花中的模式名称获取数据库名称吗

】我可以根据雪花中的模式名称获取数据库名称吗【英文标题】:Canigetdatabasenamewithrespecttoschemanameinsnowflake【发布时间】:2020-03-2313:07:06【问题描述】:您好,我正在尝试通过在雪花中指定模式的名称来查找数据库的名称【问题... 查看详情

servlet中啥方法获取客户端提交的数据

解答题:在Servlet中,我们通过什么方法获取客户端提交的数据?请详细解答。谢谢了!页面通过提交表单,将表单数据封装成request对象,传递给Servlet类,Servlet类提供的①Stringstr=request.getParameter("参数名称")方法可以获得参数值... 查看详情

从DDL获取存储过程名称的无限循环[关闭]

】从DDL获取存储过程名称的无限循环[关闭]【英文标题】:InfiniteloopgettingstoredprocedurenamefromDDL[closed]【发布时间】:2015-02-1107:09:14【问题描述】:我有这个正则表达式来检查DLL是否有程序varexpReg="(((ALTER|CREATE|OR|REPLACE|)*)+)?PROCEDURE.*"... 查看详情

使用 oracle jdbc 连接时如何获取数据库模式名称?

】使用oraclejdbc连接时如何获取数据库模式名称?【英文标题】:Howtogetdatabaseschemanamewhenusingoraclejdbcconnection?【发布时间】:2012-11-1209:37:39【问题描述】:我正在尝试使用DatabaseMetaData.getTables()方法获取所有数据库表。但是这种方... 查看详情

获取网站数据[关闭]

】获取网站数据[关闭]【英文标题】:Getdataofwebsite[closed]【发布时间】:2016-05-0300:49:18【问题描述】:我想获取网站的数据。我想在应用程序中显示表格。你知道我该怎么做吗?感谢您的回答!【问题讨论】:【参考方案1】:通... 查看详情

javascript获取json对象的key名称的两种方法

javascript获取json对象的key名称的两种方法数据处理中,你可能接收到一个不确定内容格式的json对象,然后要把key的值提取出来。今天试过两种可以提取jsonkey的方法,均可以正常工作。先看第一种方法jsonObj={Name:‘richard‘,Value:‘8... 查看详情