一.命名规范
1 一般概念
1) 尽量使用完整的英文描述符
2) 采用适用于相关领域的术语
3) 采用大小写混合使名字可读
4)见名知意,简短意赅(小于 15 个字母为正常选择)
5) 避免使用下划线(除静态常量等)
2 标识符类型说明
1)包( Package )的命名
Package 的名字应该采用完整的英文描述符,都是由一个小写单词组成。并且包名的前缀总是一个顶级域名,通常是 com、edu、gov、mil、net、org ;
具体如: com.xqhadoop.test
2)类( Class )的命名
类名应该是个一名词,采用大小写混合的方式,每个单词的首字母大写。尽量保证类名简洁而富于描述。使用完整单词,避免缩写词 ( 除非工程内有统一缩写规范或该缩写词被更广泛使用,像 URL , HTML)
3) 接口( Interface )的命名
基本与 Class 的命名规范类似。在满足 Classd 命名规则的基础之上,保证开头第一个字母为 ”I”, 便于与普通的 Class区别开。其实现类名称取接口名的第二个字母到最后,且满足类名的命名规范;如: IMenuEngine。
4) 枚举( Enum )的命名
基本与 Class 的命名规范类似。在满足 Classd 命名规则的基础之上,保证开头第一个字母为 ”E”,
便于与普通的 Class区别开,如:EUserRole。
5)异常( Exception )的命名
异 常( Exception ) 通常采用字母 e 表示异常,对于自定义的异常类,其后缀必须为 Exception
如: BusinessException
6)方法( Method )的命名
方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。 方法名尽可能的描述出该方法的动作行为。返回类型为 Boolean 值的方法一般由“ is ”或“ has ”来开头 如:getCurrentUser() 、addUser() 、asAuthority()
7) 参数( Param )的命名
第一个单词的首字母小写,其后单词的首字母大写。参数量名不允许以下划线或美元符号开头, 虽然这在语法上是允许的。参数名应简短且富于描述。
如: public UserContext getLoginUser(String loginName);
8) 常量字段 ( Constants )的命名
静态常量字段( static final ) 全部采用大写字母,单词之间用下划线分隔;如: public static final Long FEEDBACK; public static Long USER_STATUS;
二.编码风格
1. 缩进问题
a.缩进风格
既然是从缩进说起,就先说说缩进风格;一般来说,象Java这样的类C语言,都采用缩进风格。
这是C程序最早的缩进风格,由C的发明者Ritchie和他的合作者Kernighan率先使用:
if (<cond>) {
<body>
}
其特点,是大括号和if判断在同一行。通常,缩进为8个空格或一个tab键,但在C++和Java里,也常缩进4个空格。有人喜欢用两个空格,窃以为不好,不明显。
b.Tab还是空格(Tabs vs Space)
还是缩进问题。那么一次缩进应该多大距离?是八个空格键,还是一个Tab键?Java有一个特点,就是跨平台性。不过跨平台指的是它的Class可以在不同平台的虚拟机上运行。Java的源程序,有时候可不是跨平台的。什么?源程序还能不跨平台?是的。在缩进的时候,尽量不用Tab,而是用空格(建议选4个空格)。
2.变量命名
SUN Java Code Convention里定义了Java里ackage, class, method和普通变量的命名规则,我就不用再浪费字节了。这里提提一些注意事项和一些SUN没提到但大家常用的方式。
a. 用有意义的名字命名变量
首先,用完整的英语单词或约定俗成的简写命名你的变量,如:firstName zipCode 如果英语不够好,至少用别人看得懂的拼音命名,如zhuZhi (住址),胡乱简写,或者胡乱命名,则没有人看得懂你的变量的含义。
b. 常量用全大写加下画线命名
Java里的常量,就是static final:
static final SMTH_BBS=”bbs.tsinghua.edu.cn”;
c. 用复数命名collection类变量
collection包括数组,vector等。命名时请用复数:
customers classMates。也可以用一些修饰词命名:
someStudents allDepartments。
d. 循环变量
一般大家都用i, j, k等做循环变量。
3. Java文件格式
有许多方式定义你的文件语句格式,以下是一个例子:
a. 文件头说明 (可无)
b. Package定义
c. 空行
d. Import语句
e. 空行
f. 类定义
4. import顺序
杂乱无章的顺序,看起来很不顺眼。应该对你要import的classes归类,按顺序罗列:
a. Java标准类(java.*)
b. Java扩充类(javax.*)
c. 第三方类
d. 你的应用程序的类
5. Classes的顺序
a. Javadoc注释或者其它文件头注释
b. 类声明
c. Fields声明
d. 空行
e. 构造函数
f. 空行
g. 方法(不包括main)
h. 空行
i. Inner类
j. 空行
k. main()
6. Field定义
请遵从以下顺序:
a.Public 常量
b.Public 变量
c.Protected 常量
d.Protected 变量
e.Package 常量
f.Package 变量
g.Private 常量
h.Private 变量