我注意到在函数式/声明式编程和PL/SQL中使用了不同的命名约定。方法名称仅说明方法返回的内容。而不是像
account.getAmount()
或Time.getIsoFormattedDateString(Date date)
那样,他们将使用account.amount()
和Time.isoFormattedDateString(Date date)
。对我来说,这是完全有意义的,因为函数名称描述了评估方法的结果(假设没有副作用,无论如何都不应该有)。 “get”前缀似乎是多余的。我刚开始阅读《Clean Code》一书。它说方法应该只做一件事情,而且那件事通常应该是以下三种之一:
1. 通知某个对象发生了事件,通常将事件作为参数传递。 2. 关于某个对象提出问题,通常使用方法名称形成自然语言语句,将对象作为参数传递并返回布尔值。 3. 获取某些东西,可能会将一些查找键或要转换的对象作为参数传递,并始终返回所需的对象/值。
我的问题是关于第三类。除了“get”之外,还有命名约定适用于这种方法吗?选择方法名称/前缀时使用什么标准?
以下是一个例子:
我有一个类,其中包含两个方法
getDates()
和getSpecialDates()
。getDates()
只是返回一个私有变量(日期集合的引用)的值。据我理解,这是标准的getter。 getSpecialDates()
不同;它调用getDates()
,从另一个类中获取过滤器,应用该过滤器并返回实际上是getDates()
的子集。方法getSpecialDates()可以被命名为computeSpecialDates()
、findSpecialDates()
、selectSpecialDates()
或elicitSpecialDates()
等。或者我可以直接将其命名为specialDates()
。然后,为了保持一致性,我可以将getDates()
重命名为dates()
。
为什么要区分应该添加"get"前缀和不需要添加的方法,为什么要找替代词来代替"get"?