Java编程 -- 命名规范

转自:http://www.hawstein.com/posts/google-java-style.html#Naming

 

命名约定

5.1 对全部标识符都通用的规则

标识符只能使用ASCII字母和数字,所以每一个有效的标识符名称都能匹配正则表达式\w+html

在Google其它编程语言风格中使用的特殊前缀或后缀,如name_mNames_namekName,在Java编程风格中都再也不使用。java

5.2 标识符类型的规则

5.2.1 包名

包名所有小写,连续的单词只是简单地链接起来,不使用下划线。正则表达式

5.2.2 类名

类名都以UpperCamelCase风格编写。编程

类名一般是名词或名词短语,接口名称有时多是形容词或形容词短语。如今尚未特定的规则或行之有效的约定来命名注解类型。编程语言

测试类的命名以它要测试的类的名称开始,以Test结束。例如,HashTestHashIntegrationTestpost

5.2.3 方法名

方法名都以lowerCamelCase风格编写。测试

方法名一般是动词或动词短语。google

下划线可能出如今JUnit测试方法名称中用以分隔名称的逻辑组件。一个典型的模式是:test<MethodUnderTest>_<state>,例如testPop_emptyStack。 并不存在惟一正确的方式来命名测试方法。spa

5.2.4 常量名

常量名命名模式为CONSTANT_CASE,所有字母大写,用下划线分隔单词。那,到底什么算是一个常量?pwa

每一个常量都是一个静态final字段,但不是全部静态final字段都是常量。在决定一个字段是不是一个常量时, 考虑它是否真的感受像是一个常量。例如,若是任何一个该实例的观测状态是可变的,则它几乎确定不会是一个常量。 只是永远不打算改变对象通常是不够的,它要真的一直不变才能将它示为常量。

// Constants static final int NUMBER = 5; static final ImmutableList<String> NAMES = ImmutableList.of("Ed", "Ann"); static final Joiner COMMA_JOINER = Joiner.on(','); // because Joiner is immutable static final SomeMutableType[] EMPTY_ARRAY = {}; enum SomeEnum { ENUM_CONSTANT } // Not constants static String nonFinal = "non-final"; final String nonStatic = "non-static"; static final Set<String> mutableCollection = new HashSet<String>(); static final ImmutableSet<SomeMutableType> mutableElements = ImmutableSet.of(mutable); static final Logger logger = Logger.getLogger(MyClass.getName()); static final String[] nonEmptyArray = {"these", "can", "change"}; 

这些名字一般是名词或名词短语。

5.2.5 很是量字段名

很是量字段名以lowerCamelCase风格编写。

这些名字一般是名词或名词短语。

5.2.6 参数名

参数名以lowerCamelCase风格编写。

参数应该避免用单个字符命名。

5.2.7 局部变量名

局部变量名以lowerCamelCase风格编写,比起其它类型的名称,局部变量名能够有更为宽松的缩写。

虽然缩写更宽松,但仍是要避免用单字符进行命名,除了临时变量和循环变量。

即便局部变量是final和不可改变的,也不该该把它示为常量,天然也不能用常量的规则去命名它。

5.2.8 类型变量名

类型变量可用如下两种风格之一进行命名:

  • 单个的大写字母,后面能够跟一个数字(如:E, T, X, T2)。
  • 以类命名方式(5.2.2节),后面加个大写的T(如:RequestT, FooBarT)。

5.3 驼峰式命名法(CamelCase)

驼峰式命名法分大驼峰式命名法(UpperCamelCase)和小驼峰式命名法(lowerCamelCase)。 有时,咱们有不仅一种合理的方式将一个英语词组转换成驼峰形式,如缩略语或不寻常的结构(例如”IPv6”或”iOS”)。Google指定了如下的转换方案。

名字从散文形式(prose form)开始:

  1. 把短语转换为纯ASCII码,而且移除任何单引号。例如:”Müller’s algorithm”将变成”Muellers algorithm”。
  2. 把这个结果切分红单词,在空格或其它标点符号(一般是连字符)处分割开。
    • 推荐:若是某个单词已经有了经常使用的驼峰表示形式,按它的组成将它分割开(如”AdWords”将分割成”ad words”)。 须要注意的是”iOS”并非一个真正的驼峰表示形式,所以该推荐对它并不适用。
  3. 如今将全部字母都小写(包括缩写),而后将单词的第一个字母大写:
    • 每一个单词的第一个字母都大写,来获得大驼峰式命名。
    • 除了第一个单词,每一个单词的第一个字母都大写,来获得小驼峰式命名。
  4. 最后将全部的单词链接起来获得一个标识符。

示例:

Prose form                Correct               Incorrect
------------------------------------------------------------------
"XML HTTP request"        XmlHttpRequest        XMLHTTPRequest
"new customer ID"         newCustomerId         newCustomerID
"inner stopwatch"         innerStopwatch        innerStopWatch
"supports IPv6 on iOS?"   supportsIpv6OnIos     supportsIPv6OnIOS
"YouTube importer"        YouTubeImporter
                          YoutubeImporter*

加星号处表示能够,但不推荐。

Note:在英语中,某些带有连字符的单词形式不惟一。例如:”nonempty”和”non-empty”都是正确的,所以方法名checkNonemptycheckNonEmpty也都是正确的。

相关文章
相关标签/搜索