老大要求对程序进行 Coding Review ,没办法只好重新 开始 看起了 JAVA Coding Rule. 与君共勉之。。。
-----------------------------------------------------------------------------------------------------------------------------------------------
1.1. Package名(小写字母)
特定package名的前缀应是通常只用小写字母书写的最高标准的域名 (现在是由com、edu、gov、mil、net、org、或ISO_3166所规定的2个文字的字母表来表示的国家编码)。前缀的接续部分是根据编程组织的原本的命名规则来规定。此规则规定目录名为部署、部门、project、machine或注册名。另外,由两个以上词构成的目录名也全部用小写字母来命名。
例: com.mc.pf.common.properties
1.2. 文件名
用该文件中的public class名作为文件名。
例: public class Point{…}所以文件名为Point.java
1.3. 类名(各单词首字母为大写字母)
类名首字母及各单词的首字母为大写字母。
注意 "Test"这个单词在类名中不使用。
例:CapitalizedWithInternalWordsAlsoCapitalized
1.3.1. 例外的类名
例外的类名首字母为大写字母、各单词的首字母为大写字母、Exception用作为末尾的类名。
注意 "Test"这个单词在例外的类名中不使用。(保留作为JUnit的TestClass命名用)
例:Class NameEndsWithException
1.3.2. 接口名
接口名首字母为大写字母、各单词的首字母为大写字母。
注意 "Test"这个单词在接口名中不使用。
例:NameOfInterface
另外,要表示添加类里特定功能的接口时,用末尾是able的接口名。
例:Runnable、Clonable、Serializable、 …
1.3.3. 实现类名
实现类名是在所实现的接口名末尾添加Impl。但是,在扩展功能实现类的情况下,根据不同用途来命名。
注意 "Test"这个单词在实现类名中部使用。
例:接口ClassNameEndsWith的实现类。ClassNameEndsWithImpl接口RequestHandler的扩展实现类。SalesRequestHandler
1.3.4. 抽象类名
抽象类名从Abstract开始,各单词的首字母为大写字母。
注意 "Test"这个单词在抽象类名中不使用。
例: AbstractBeforeSubClassName
1.3.5. 常量类名、常量接口名
常量类、常量接口在本系统无特别规定。
1.3.6. 单体测试类名
单体测试类名是在测试的类名的末尾添加test。
例: DateUtil类的测试类名是DateUtilTest.java
1.4. 常量名(大写字母,"_"连接)
常量名全部使用大写字母,单词用"_"连接。
例: UPPER_CASE_WITH_UNDERSCORES
另外,做为半常量(只作参照用)的Map、List等的object名也和常量名一样。
1.5. 变量名(首字母为小写文字,其余首字母为大写文字)
变量名取一个有意思的名字。由2个单词以上构成的变量名首字母为小写文字,各单词的首字母为大写文字。
例: employeeStateNumber
1.5.1. 类变量名、接口变量名
类变量名、接口变量名以"_"开始。
例: _field
1.5.2. 局部变量名
局部变量名无特别的规定,取一有意思的名字即可。
1.6. 方法名
1.6.1. 属性的取得方法
写成get<属性名> ()。
例: public Employee getEmployee()
1.6.2. 属性的设定方法
写成set<属性名> (…)。
例: public void setEmployee(Employee employee)
1.6.3. 返回boolean变量的方法
返回boolean变量的方法名。
boolean isEmpty()
1.7. 循环变量Iterator的命名规则(i,j,k)
在范围小的循环里面,按顺序使用i、 j、 k 来作为循环变量。
1.8. import句子(不使用"*")
在import句子里不使用"*" ,要精确到每个具体引用的类.
例:不正确的例子import java.util.*;
正确的例子import java.util.HashMap; import java.util.ArrayList; import java.util.Map;
1.9. 换行(128字母,30行)
一行最多为128个字母,如超过128个字母就换行。不允许一个函数超过30 行。
1.10. 数组
数组的定义写成Type[] arrayName。
例:
不正确的例子static void main(String args[]); 正确的例子static void main(String[] args);
1.11. 变量定义(一行里只一个)
一行里只一个变量定义。
例:不正确的例子int level, size;
正确的例子
int level;
int size;
1.12. Collection
不使用Vector、 Hashtable、 Enumeration ,使用collection类的List (ArrayList)、 Map(HashMap)、 Iterator 。
2.1. 说明
Javadoc的说明一定要使用。此说明可根据Javadoc或同样的工具变换成HTML形式上的文件。
Java的说明有三种。
l /** ... */输入 Javadoc说明、HTML文件。
l /* */ 一般说明、两行以上说明用此项。
l // 一般说明、一行说明用此项。
Javadoc说明用于功能概要,也就是外部定义记述,在类及方法定义前记入。说明的第一行在HTML的Method Index里使用。记述外部功能简短的说明。说明的第一行用全角的句号("。")结尾。在第一行下面进行功能说明。
在所有的类、方法、字段里必须要加Javadoc说明。(包括private)
2.2. Javadoc的使用方法
2.21. 源程序头部说明
在源程序头部说明里记入
l 文件名
l Product
l Version
l Copyright
注意Version在每次交货时累加。
例:
/*
* CordingRuleImpl.java
* Product: PF
* Version: 1.0
* Copyright 2003 by 株式会社EC-one China
* ALL Rights Reserved.
*/
2.2.2.
类说明
在类说明里记录
l 类说明
l author
注意 历史的管理结合test以后进行。在进行修改时追加author,记入名字和修改日期。
例:
/**
* 工人数据类。
* 管理工人的个人信息。
* @author Takahiro Kanda2002/03/06
* @author Taro Yanada 2002/03/31
*/
2.2.3. 字段说明
在字段说明里记入字段的说明。
例:
/** 工人编号 */
String employeeCode;
2.2.4. 方法说明
在方法说明里记入
l 方法的说明
l 参数
l 返回值
l 例外
例:
/**
* 在工人目录里追加工人编号。
* @param employeeCode追加的工人编号
* @return true-追加成功,false-追加失败
* @exception IndexOutOfBoundsException employeeCode10位以上时产生
*/
public boolean addEmployee(String employeeCode )throws IndexOutOfBoundsException{
.......
}