[关闭]
@markheng 2015-10-14T09:06:04.000000Z 字数 3372 阅读 1914

代码风格指南

工程设计管理


1 前言

参考出处:http://www.cnblogs.com/lanxuezaipiao/p/3534447.html

这份文档是参考Google Java编程风格规范所作出的对命名规则的定义。

与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题, 同时也讨论一些约定及编码标准。然而,这份文档主要侧重于我们所普遍遵循的规则, 对于那些不是明确强制要求的,我们尽量避免提供意见。

1.1 术语说明

在本文档中,除非另有说明:

术语class可表示一个普通类,枚举类,接口或是annotation类型(@interface)
术语comment只用来指代实现的注释(implementation comments),我们不使用“documentation comments”一词,而是用Javadoc。
其他的术语说明会偶尔在后面的文档出现。

1.2 指南说明

本文档中的示例代码并不作为规范。也就是说,虽然示例代码是遵循Google编程风格,但并不意味着这是展现这些代码的唯一方式。 示例中的格式选择不应该被强制定为规则。

2 命名规则

2.1 对所有标识符都通用的规则

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

在Google其它编程语言风格中使用的特殊前缀或后缀,如name_, mName, s_name和kName,在Java编程风格中都不再使用。

2.2 标识符类型的规则

2.2.1 包名

包名全部小写,连续的单词只是简单地连接起来,不使用下划线。
本项目中格式如下 com.smartzone.模块名称.功能名称
例如 com.smartzone.bbs.action

2.2.2 类名

类名都以UpperCamelCase(见下文2.3驼峰命名法)风格编写。

类名通常是名词或名词短语,接口名称有时可能是形容词或形容词短语。现在还没有特定的规则或行之有效的约定来命名注解类型。

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

2.2.3 方法名

方法名都以lowerCamelCase风格编写。

方法名通常是动词或动词短语。

下划线可能出现在JUnit测试方法名称中用以分隔名称的逻辑组件。一个典型的模式是:test_,例如testPop_emptyStack。 并不存在唯一正确的方式来命名测试方法。

2.2.4 常量名

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

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

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

这些名字通常是名词或名词短语。

2.2.5 非常量字段名

非常量字段名以lowerCamelCase风格编写。

这些名字通常是名词或名词短语。

2.2.6 参数名

参数名以lowerCamelCase风格编写。

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

2.2.7 局部变量名

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

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

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

2.2.8 类型变量名

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

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

2.3 驼峰式命名法(CamelCase)

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

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

  1. 把短语转换为纯ASCII码,并且移除任何单引号。例如:"Müller’s algorithm"将变成"Muellers algorithm"。
  2. 把这个结果切分成单词,在空格或其它标点符号(通常是连字符)处分割开。
    推荐:如果某个单词已经有了常用的驼峰表示形式,按它的组成将它分割开(如"AdWords"将分割成"ad words")。 需要注意的是"iOS"并不是一个真正的驼峰表示形式,因此该推荐对它并不适用。
  3. 现在将所有字母都小写(包括缩写),然后将单词的第一个字母大写:最后将所有的单词连接起来得到一个标识符。
    • 每个单词的第一个字母都大写,来得到大驼峰式命名。
    • 除了第一个单词,每个单词的第一个字母都大写,来得到小驼峰式命名。
      4.示例
  1. Prose form Correct Incorrect
  2. ------------------------------------------------------------------
  3. "XML HTTP request" XmlHttpRequest XMLHTTPRequest
  4. "new customer ID" newCustomerId newCustomerID
  5. "inner stopwatch" innerStopwatch innerStopWatch
  6. "supports IPv6 on iOS?" supportsIpv6OnIos supportsIPv6OnIOS
  7. "YouTube importer" YouTubeImporter
  8. YoutubeImporter*

加星号处表示可以,但不推荐。

Note:在英语中,某些带有连字符的单词形式不唯一。例如:"nonempty"和"non-empty"都是正确的,因此方法名checkNonempty和checkNonEmpty也都是正确的。

2.4 **action命名规则

使用 lowerCamelCase规则

2.5 **action在配置文件中进行适当的分包管理,不要所有功能的action挤在一起

2.6 **前台网页要按照功能分开存储,方便修改

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注