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