Gqq*_*big 4 coding-style naming-conventions
以Java标准库为例,为什么不Object.equals
称为Object.equal?为什么Object.clone
使用单数,而不是Object.clones?
为什么我看到几乎所有人都在使用getXXX
和setXXX
阅读和设置对象的属性,而不是获取或设置?
Max*_*oel 10
那些方法名称是动词,而不是名词.equals
是动词"平等"的第三人称形式(可能是疑问句 - 用于支持方法名称中经常被称为非字母数字字符的语言equals?
),并且clone
是动词"克隆"的第二人称命形式(你'重新订购对象:"克隆自己!").
一般情况下,你用的动词疑问句相对于另一个(即查询有关对象的状态信息的方法equals
,contains
,hasXXX
...),为"行动"的方法(即让对象执行一些任务,例如使用的方法势在必行动词clone
,add
,show
...很多时候,这些方法不返回任何东西),并为查询有关对象的状态信息,而无需任何引用外部(方法名词例如length
,intValue
,keys
).请注意,这些名词可以是单数或复数,具体取决于方法返回的内容:单数形式的东西只能是单数(length
),复数形式可以返回列表/地图/其他容器(keys
).
Getter是一种特殊情况,您可以使用动作动词(get)将这些方法"标记"为getter,并使用set的setter进行对称.
此外,getter/setter是C++和Java中缺少属性的一种解决方法.在没有这种弱点的语言中,它们不存在:你使用属性,而那些是名词.