1 . 为什么要有编码规范
编码规范对于程序员而言尤为重要,有以下几个原因:
- 一个软件的生命周期中, 80% 的花费在于维护;
- 几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护;
- 编码规范可以改善软件的可读性,可以让程序员尽快并彻底地理解新的代码;
- 如果你将源码作为产品发布,就需要确任它是否被很好的打包并且清晰无误;
2. 编码规范
package java.test;
import java.test.test1.TestClass;
/**
Class description goes here.
@version 1.82 18 Mar 1999
@author Firstname Lastname
*/
public class Son extends TestClass {
/* classVar1 documentation comment /
public static int classVar1;
/**
classVar2 documentation comment that happens to be
more than one line long
*/
private static Object classVar2;
/* instanceVar1 documentation comment /
public Object instanceVar1;
/* instanceVar2 documentation comment /
protected int instanceVar2;
/* instanceVar3 documentation comment /
private Object[] instanceVar3;
/**
- …constructor Son documentation comment…
*/
public Son () {
// …implementation goes here…
}
/**
- …method doSomething documentation comment…
*/
public void doSomething() {
// …implementation goes here…
}
/**
…method doSomethingElse documentation comment…
@param someParam description
*/
public void doSomethingElse(Object someParam) {
// …implementation goes here…
}
}
3. 编程实践
- 若没有足够理由,不要把实例变量或类变量声明为公有;
- 类变量 名 不要以下划线开头;
- 最小化变量的作用域;
- 尽量不要使用静态变量;
- 所有的变量名 / 方法名都应该是见明知意的,不要使用 temp , l , x 等变量名;
- 变量定义的时候一定要初始化;
- 不要硬编码,即使它只使用了一次;
- 在含有多种运算符的表达式中使用圆括号来避免运算符优先级问题;
- 完成代码的时候,一定要和式样一致;
- 更改的画面一定要在至少在中、日和英文系统(各一个)的真实环境下进行测试;
- 容器类( map 或 list )在使用之前一定要保证它的正确初始化(里面没有垃圾数据);
- 提交代码之前要充分的 CDI ,尽量进行交叉 review ,而且 review 者最好是不懂改造点的人;
- 提交代码之前要比较差分,确保提交的 source 是正确的;
- 不要将测试数据提交到数据库中;
- 在做 GUI 的时候,只要有按钮点击,并出现别的画面的时候,必须考虑多重启动的问题;
- 如果编写的是数据类的话,要完成它的 toString 方法和 clone 方法;
- 代码在 20 行左右或者关键的地方必须出现注释;
- 不要出现 3 重或者 3 重以上的循环;
- 方法尽量控制在 20 到 100 行之内;
- 一行的字符个数不要超过 80 个;
- 使用空行来分割或组织代码,推荐在方法中使用 1 行,方法见 2 行,不同部分 3 到 4 行;
- 不要使用 tab 键,如果使用的话,在 eclipse 中将 tab 映射成 4 个 space ;
- 尽量不要 copy/paste ,尽量使用继承或重构的方式共享相同的代码;
- 要是 copy/paste ,注意更新注释;
- 在类中, public 方法必须写 javadoc ,还要注意方法改变后同时更新注释或 javadoc ;
- 方法的制限和约定一定要在 javadoc 中写清楚;
- 注释一定要简明扼要,不要只是代码的重复;
- 不要编写只有自己能看懂的代码,简单就是最好的;
- 不要使用代码生成工具生成的代码并改造它;
- 程序的关键部分和异常都要出好 trace ;
- 一个函数只使用一个 return , if else 中的各个分支不要遗漏, case 不要忘记 break ;
- 一定不要将重要的东西保存在桌面上;
- 不要出现 e.printStackTrace()/System.out.println() ,可将其输出到 log 中;
- 无用的代码一定要删除;
- 一定要处理异常;
- 一定要在资源使用完后将其释放,不如 file , socket ,数据库连接等;
- for , while 等语句后面都要加上大括号;
- 给自己的代码编写单元测试项,编写的时候不要改动被测试项的代码,如果要改,使用反射;
- 方法开始的时候,一定要检查参数的有效性;
- 返回零长度的数组比返回 null 好;
- 注意按引用传递和按值传递的区别;
参考资料:
1. http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html