Effective Java 第56条:遵守普通接受的命名惯例


Java平台建立了一整套很好的命名惯例《naming convention》,其中有许多命名惯例包含在了《The Java Language Specification》中。这些命名惯例分为两大类:字面的(typographical)和语法的(grammatical)。

字面惯例

包的名称应该是层次状的,用句号分隔每个部分。每个部分都包括小写字母和数字(很少使用数字)。任何将在你的组织之外使用的包,其名称都应该以你的组织的Internet域名开头,并且顶级域名放在前面,例如org.jeoygin。标准类库和一些可选的包,其名称以java和javax开头,这属于这一规则的例外。

包名称的其余部分应该包括一个或者多个描述该包的组成部分,通常不超过8个字符,鼓励使用有意义的缩写形式。

类和接口的名称,包括枚举和注解类型的名称,都应该包括一个或者多个单词,每个单词的首字母大写。

方法和域的名称与类和接口的名称一样,都遵守相同的字面惯例,只不过方法或者域的名称的第一个字母应该小写。

“常量域”的名称应该包含一个或者多个大写的单词,中间用下划线符号隔开。

局部变量名称的字面命名惯例与成员名称类似,只不过它也允许缩写。

类型参数名称通常由单个字母组成,这个字母通常是以下五种类型之一:T表示任意的类型,E表示集合的元素类型,K和V表示映射的键和值类型,X表示异常。

语法惯例

对于包而言,没有语法命名惯例。

类通常用一个名词或者名词短语命名。

接口的命名与类相似,或者用一个以“-able”或“-ible”结尾的形容词来命名。

由于注解类型有那么多用处,因此没有单独安排词类。

执行某个动作的方法通常用动词或者动词短语来命名。对于返回boolean值的方法,其名称往往以单词“is”开头,后面跟名词或名词短语,或者任何具有形容词功能的单词或短语。

如果方法返回被调用对象的一个非boolean的函数或者属性,它通常用名词、名词短语,或者以动词“get”开头的动词短语来命名。

如果方法所在的类是个Bean,就要强制使用以“get”开头的形式。

转换对象类型的方法、返回不同类型的独立对象的方法,通常被称为toType,例如toString和toArray。返回视图的方法通常被称为asType,例如asList。返回一个与被调用对象同值的基本类型的方法,通常被称为typeValue,例如intValue。静态工厂的常用名称为valueOf、of、getInstance、netInstance、getType和NewType。

boolean类型的域的命名与boolean类型的访问方法很类似,但是省去了初始的“is”。其他类型的域通常用名词或者名词短语来命名。局部变量的语法惯例类似于域的语法惯例,但是更弱一些。

参考资料

  1. 《Effective Java中文版》第2版,Joshua Bloch 著,杨春花 俞黎敏 译