|
|
|
### 1 简介
|
|
|
|
  对于软件开发遵循统一的规范,有利于增强代码的可读性,同时防范错误,更好的发挥所使用的语言的优点,提高工作效率。所以我们制定此编程规范,指导公司的编码活动。本规范适用于公司各个使用Java作为开发语言的项目,作为源程序编写的规范,必须遵守。使用其他语言所编写的程序,比如Perl,在不和所使用的语言冲突的情况下,可以参考本规范的要求来编写源程序。
|
|
|
|
|
|
|
|
  **参考资料**
|
|
|
|
|
|
|
|
|
|
|
|
| 文档名称 | 作者 | 发布日期 |
|
|
|
|
| :-------: | :----: | :-------: |
|
|
|
|
| 《Rational Unified Process 2000》 | Rational Software Corporation | |
|
|
|
|
| 《C++编程规范》 | 摩托罗拉中国公司 | |
|
|
|
|
| 《高质量C语言编程》 | 林锐 | |
|
|
|
|
| 《Java编程规范》 | Sun | |
|
|
|
|
|
|
|
|
### 2 文件和目录
|
|
|
|
#### 2.1 文件使用统一而且通用的后缀名
|
|
|
|
* java程序的源文件: .java
|
|
|
|
* 二进制文件: .class
|
|
|
|
* AspectJ源文件: .aj
|
|
|
|
|
|
|
|
#### 2.2 文件名要清晰、精炼、避免冲突
|
|
|
|
  可以用公共前缀对文件分组,但是要防止名字过长和冗余信息过多。在一个项目中,遵循统一的文件名命名规则。
|
|
|
|
#### 2.3 文件/目录名字字符集选择
|
|
|
|
* 只能使用以下字符集:[A-Za-z0-9_-]
|
|
|
|
* 包名只能用小写字符、数字和“.”。
|
|
|
|
* 类名第一个字符必须大写。
|
|
|
|
|
|
|
|
#### 2.4 单个的文件建议不超过1000行
|
|
|
|
  这项不作为强制条件执行,但一个类超过1000行,很有可能这个类的内聚性有问题。
|
|
|
|
#### 2.5 单个的函数建议不超过100行,但一定不要超过200行
|
|
|
|
|
|
|
|
### 3 文件组织
|
|
|
|
  每个Java源文件都包含一个单一的公共类或接口。若私有类和接口与一个公共类相关联,可以将它们和公共类放入同一个源文件(不建议)。公共类必须是这个文件中的第一个类或接口。
|
|
|
|
Java源文件还遵循以下规则:
|
|
|
|
* **文件头注释**
|
|
|
|
* **包和引入语句**
|
|
|
|
* **类和接口声明**
|
|
|
|
|
|
|
|
#### 3.1 文件头注释
|
|
|
|
  参见注释里的文件头注释。
|
|
|
|
#### 3.2 包和引入语句
|
|
|
|
  在多数Java源文件中,第一个非注释行是包语句。在它之后可以跟引入语句。例如:
|
|
|
|
```
|
|
|
|
package java.awt;
|
|
|
|
import java.awt.peer.CanvasPeer;
|
|
|
|
```
|
|
|
|
#### 3.3 类和接口说明
|
|
|
|
  类/接口申明包括以下几部分:
|
|
|
|
* **1. 类/接口文档注释**
|
|
|
|
* **2. 类或接口的声明**
|
|
|
|
* **3. 类/接口实现的注释(该注释应包含任何有关整个类或接口的信息,而这些信息又不适合)**
|
|
|
|
* **4. 类的(静态)变量**
|
|
|
|
* **5. 实例变量**
|
|
|
|
* **6. 构造器**
|
|
|
|
* **7. 方法**
|
|
|
|
|
|
|
|
#### 3.4 变量申明的次序
|
|
|
|
  变量申明的次序如下:
|
|
|
|
* **1. 先静态后实例变量**
|
|
|
|
* **2. 先public后protected再private**
|
|
|
|
|
|
|
|
### 4 排版
|
|
|
|
#### 4.1 缩进
|
|
|
|
  4个空格作为缩进排版的一个单位,缩进也可以使用TAB键。
|
|
|
|
#### 4.2 在程序适当的地方加入空行
|
|
|
|
  在以下地方应该是用空行分开:
|
|
|
|
* **1. 方法之间应该用空行分开;**
|
|
|
|
* **2. 一组局部变量声明和代码之间用空行分开;**
|
|
|
|
* **3. 用空行将代码按照逻辑片断划分;**
|
|
|
|
* **4. 除非方法非常简单(如只有一两条语句),否则方法返回语句和其他语句用空行分开;**
|
|
|
|
* **5. 每个类声明之后应该加入空行同其他代码分开;**
|
|
|
|
|
|
|
|
#### 4.3 换行
|
|
|
|
#### 4.4 一行只写一条语句
|
|
|
|
#### 4.5 if for do while等语句自占一行,其后无论执行语句多长,都应该使用{}
|
|
|
|
#### 4.6 右大括号}要单独占一行,左大括号不作结强制规定,但在单个文件中要统一
|
|
|
|
#### 4.7 代码行之间应该留有适当的空格
|
|
|
|
### 5 命名规范
|
|
|
|
#### 5.1 命名基本规范
|
|
|
|
#### 5.2 类名采用每个单词首字母大写的方式
|
|
|
|
#### 5.3 包的命名格式采用utn.xxx开头
|
|
|
|
#### 5.4 常量、静态变量名采用全大写的方式,每个单词间用下划线分隔
|
|
|
|
#### 5.5 变量名和方法名第一个单词的首字母小写,其余每个单词的首字母大写,首字母以外的字母全部小写
|
|
|
|
### 6 注释
|
|
|
|
#### 6.1 确保注释是完善你的代码而不是重复它
|
|
|
|
#### 6.2 用中文或者英文注释代码
|
|
|
|
#### 6.3 注释用词要精确,不能有二义性
|
|
|
|
#### 6.4 注释中的术语要通用
|
|
|
|
#### 6.5 注释应该和代码同步更新
|
|
|
|
#### 6.6 禁止使用行尾注释
|
|
|
|
#### 6.7 注释不要嵌套
|
|
|
|
#### 6.8 使用文档注释
|
|
|
|
#### 6.9 文件头注释
|
|
|
|
#### 6.10 方法注释
|
|
|
|
#### 6.11 类注释
|
|
|
|
#### 6.12 方法或者类的内部注释
|
|
|
|
#### 6.13 代码修改必须增加注释
|
|
|
|
### 7 表达式
|
|
|
|
#### 7.1 如果表达式中的运算符较多,使用括号确定运算顺序
|
|
|
|
#### 7.2 避免大表达式中使用赋值语句
|
|
|
|
#### 7.3 避免数学表达式和程序表达式混淆
|
|
|
|
#### 7.4 在条件表达式中常量建议书写在前面
|
|
|
|
### 8 常用语句
|
|
|
|
#### 8.1 if语句
|
|
|
|
#### 8.2 循环语句
|
|
|
|
#### 8.3 switch语句
|
|
|
|
### 9 方法
|
|
|
|
#### 9.1 避免方法参数过多
|
|
|
|
#### 9.2 建议方法只有唯一的出口
|
|
|
|
#### 9.3 如果返回不是void,必须提供返回值
|
|
|
|
#### 9.4 重复使用的代码用方法替代
|
|
|
|
### 10 类
|
|
|
|
#### 10.1 提高类内的聚合度
|
|
|
|
#### 10.2 降低类之间的耦合度
|
|
|
|
#### 10.3 努力使类的接口少而完备
|
|
|
|
### 11 其它
|
|
|
|
#### 11.1 无论什么时候,为你的正式程序编写单元测试代码
|
|
|
|
#### 11.2 建立项目内部编码规范
|
|
|
|
#### 11.3 代码中使用到的算法或常量是根据某个规范而实现的,必须用注释说明
|
|
|
|
#### 11.4 禁止使用IDE的格式化功能格式化已有的代码 |
|
|
|
\ No newline at end of file |