为什么 Java 方法名称如此广泛地使用“get”前缀?至少在我的 Java 程序中,有很多名称以“get”开头的方法。获取方法的百分比非常高。我开始觉得“得到”这个词由于通货膨胀而失去了意义。这是我的代码中的噪音。
我注意到在函数式/声明式编程和 PL/SQL 中使用了不同的命名约定。方法名称只是说明方法返回的内容。而不是account.getAmount()
orTime.getIsoFormattedDateString(Date date)
他们将使用account.amount()
and Time.isoFormattedDateString(Date date)
。这对我来说非常有意义,因为函数的名称描述了评估方法的结果(假设没有副作用,无论如何都不应该有)。“get”前缀似乎是多余的。
我刚刚开始阅读“清洁代码”一书。它说方法应该只做一件事,而那件事通常应该是以下之一:
- 通知某个对象有关事件,通常将事件作为参数传递。
- 询问有关某个对象的问题,通常使用形成自然语言语句的方法名称,将对象作为参数传递并返回布尔值。
- 获取一些东西,可能传递一些查找键或一些要转换的对象作为参数,并始终返回所需的对象/值。
我的问题是关于第三类的。这种方法除了“get”之外还有命名约定吗?您在选择方法名称/前缀时使用什么标准?
这是一个例子:
我有一个有两种方法getDates()
和getSpecialDates()
. getDates()
只返回私有变量的值(对日期集合的引用)。据我了解,这是一个标准的吸气剂。getSpecialDates()
是不同的; 它调用getDates()
,从另一个类中获取过滤器,应用过滤器并返回实际上是getDates()
.
方法 getSpecialDates() 可以命名为computeSpecialDates()
、findSpecialDates()
或selectSpecialDates()
其他名称elicitSpecialDates()
。或者我可以简单地命名它specialDates()
。然后,为了保持一致,我可以重命名getDates()
为dates()
.
为什么要费心区分应该以“get”为前缀的方法和不应该以“get”为前缀的方法,为什么还要为“get”寻找替换词?