当前位置:首页 > java语言编程规范
文档名称 文档密级:
说明:你用一个非静态属性去初始化一个变量,有可能非静态属性自己本身还没有
初始化。
17. 显式初始化所有的局部变量。
因为没有初始化的字段会是一个潜在的bug,如一个整数开始你不能确定什么值就
初始化一个0给它。
所以最好初始化类里面的所有的字段。特别是静态的字段,最好在一开始就分配一
个初始值
错误示例: public class CSI { public CSI () { this (12); k = 0; }
public CSI (int val) { j = val; }
private int i = 5; private int j; private int k; }
正确示例:
public class CSIFixed { public CSIFixed () { this (12); }
2013-8-4
华为机密,未经许可不得扩散
第37页, 共50页
文档名称 文档密级:
public CSIFixed (int val) { j = val; k = 0; }
private int i = 5; private int j; private int k; }
18. 按照方法名把方法排序放置,同名合同类型的方法应该放在一起。 19. 不要使用嵌套赋值,即在一个表达式中使用多个 = 。 20. 不要在抽象类的构建器中调用抽象方法。
21. 重载 equals() 方法的同时,也应该重载 hashCode() 方法。
每一个存在内存中的实例的hashcode()返回码是不同的,通常可能需要
在equals()方法中判断两个引用指向的是不是同一个对象,这是就需要比较hashcode了
Huxiaoyong 细化
22. 工具类(Utility)不要定义构建器,包括私有构建器。
这是一种软件设计思想,工具类通常都是设计成单例类,
没有必要允许用户创建多个实例
23. 不要在 switch 中使用10个以上的 case 语句。 24. 把 main() 方法放在类的最后。
25. 声明方法违例的时候不要使用 Exception ,应该使用它的子类。
Exeption报的异常没有它的子类具体。例如,DataFormatException,如果出异常就
知道是数据格式异常。 IOException,就知道是IO操作的异常。
26. 不要直接扔出一个Error ,应该扔出它的子类。
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。
2013-8-4
华为机密,未经许可不得扩散
第38页, 共50页
文档名称 文档密级:
不可能指望程序能处理这样的情况。 exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。 子类更具体
27. 在进行比较的时候,总是把常量放在同一边(都放在左边或者都放在右边)。 28. 在可能的情况下,总是为类定义一个缺省的构建器。
说明:没有定义一个缺省的构建器,但定义了有一个参数的构造器,这个缺省的构
建器就不存在了。那么它的子类的构造器没有指定调用它的某个构造器程序就会编译失败。
29. 在捕获违例的时候,不使用 Exception, RuntimeException, Throwable,尽可能使用它们的子类。
说明:它们的子类报的异常更具体,即让你更清楚知道是什么异常。
30. 在接口或者工具类中中定义常量。(5级) 31. 使用大写‘L’表示 long 常量。(5级)
说明:长整常量的时候,用L来代替l.
因为l很容易和数字1混一起。 错误示例: long temp = 23434l; 正确示例:
long temp = 23434L;
32. main() 方法必须是 public static void main(String[]arg)。(5级)
说明:由于Java虚拟机需要调用类的main()方法,所以该方法的访问权限必须是
public,又因为Java虚拟机在执行main()方法时不必创建对象,所以该方法必须是static的。该方法接收一个String类型的数组参数,该数组中保存执行Java命令时传递给所运行的类参数。
33. 对返回类型为 boolean 的方法使用 is 开头,其它类型的不能使用。 34. 对非boolean类型取值方法(getter)使用 get 开头,其它类型的不能使用。 35. 对于设置值的方法(setter)使用 set 开头,其它类型的不能使用。 36. 方法需要有同样数量参数的注释 @param。
37. 不要在注释中使用不支持的标记,如:@unsupported 。 38. 不要使用 Runtime.exec() 方法。
在本程序进程的过程中启动另一个进程。
华为机密,未经许可不得扩散
第39页, 共50页
2013-8-4
文档名称 文档密级:
例如: try {
java.lang.Runtime.getRuntime().exec(\ }catch (Exception e) { }
启动微软的画图软件。
39. 不要自定义本地方法(native method)。
java代码调用其他语言的代码,例如System中
public static native void arraycopy(Object src, int srcPos, Object dest,
int destPos,int length);
Huxiaoyong 细化
40. 使用尽量简洁的运算符号。 41. 使用集合时设置初始容量。
说明:集合类是无边界的。 在创建集合对象时java会默认分配一段空间给它,默
认的空间可能过大,这样就浪费空间。在程序运行过程中可能默认的空间不够java又要重新创建一个集合对象这样浪费时间,
42. 单个首字符的比较使用 charAt() 而不用 startsWith() 。
43. 对于被除数或者被乘数为2的n次方的乘除运算使用移位运算符 >>, << 。 44. 一个字符的连接使用‘ ’而不使用 “ ”,如:String a = b + 'c'。
''字符是基本的数据类型,\是引用数据类型,基本数据运算的效率更高。
45. 不要在循环体内调用同步方法和使用 try-catch 块。
While(i<10) { Try { }
华为机密,未经许可不得扩散
第40页, 共50页
2013-8-4
共分享92篇相关文档