java中的getXXX()方法命名约定仅适用于访问器方法吗?

时间:2016-10-28 16:49:35

标签: java naming-conventions

我正在向学生讲授Java中的方法(在他们学习对象之前),因此我将使用" public static"方法。 (这不是我的选择。教科书是如何组织的。)

我想用动词命名我的方法。

我想要显示的一种方法是getSumOfTwoInts(int,int)方法,或getMaxNumber(int,int)方法,或getAngryMessage(String)方法。

但是,我知道名为getXXX()的方法是命名访问器方法的约定(即返回某个实例变量值的方法)。如果我编写自己的方法不是访问方法,那么让它们以单词" get"?

开头是不好的方式。

2 个答案:

答案 0 :(得分:2)

Java naming conventions from Oracle声明

  

方法应该是动词,混合大小写,首字母小写,每个内部单词的首字母大写。

没有任何东西可以取消以get动词开头的方法。而且,这些方法没有什么特别之处。 Javabean naming convention表示返回get以外的值的公共无参数方法的boolean前缀使该方法成为属性:

  

8.3.1:如果我们发现一对匹配的get<PropertyName>set<PropertyName>方法采用并返回相同的类型,那么我们将这些方法视为定义读取-write属性,其名称为<propertyName>。我们将使用get<PropertyName>方法获取属性值,使用set<PropertyName>方法设置属性值。

如您所见,这不适用于带参数的getXXX方法;它也不适用于static方法,因此您的getSumOfTwoIntsgetAngryMessage完全没问题。

答案 1 :(得分:0)

名称getXXX()是一个访问者,但这并不意味着它必须映射到对象内部表示中的任何特定内容。

只要对象可以为其接口契约返回有意义的内容,无论这是否由成员变量支持都是无关紧要的。事实上,要求它会违反封装原则。调用方法getXXX()最重要的是对象的规范是否说这样的方法是有意义的。

“最小意外原则”会暗示这样的方法应该在每次调用时返回相同的值,除非在对象规范的上下文中有意义的值随时间变化。