大量的工作之后,千万不要忘了重新检查自己的代码质量和风格,agile check?
try{
for(){}
}
catch(Exception e){
}
|
for(){
try{
}
catch(Exception e){
}
}
|
try{
规则2 用不需查异常RuntimeException及其子类来强化方法使用的约定
比如不希望被使用的方法,但不得不从父类集成,可以使用该方式。
规则3 用Error的子类表示系统级的异常和程序不用处理的异常
这样程序中不用显式捕获了。
规则4 用不从RuntimeException集成的子类来表示需查异常
规则5 反之,用从RuntimeException集成的子类来表示不需查异常
规则6 用链式异常保留原始异常的信息
e.printStackTrace的信息通过继承保留,便于跟踪程序调用层次。
代码风格部分:
规则7 将类的属性按种类分块
规则8 将方法的实现代码按功能分类
规则9 适度的使用对齐
规则10 控制代码的长度
规则11 尽可能不import
因为容易使得读代码的人难以定位
规则12 尽量减少同名的类
规则13 用包名体现类的层次
规则15 用StringBuffer/StringBuilder(from 5.0)代替迭代使用的String
规则16 手工清除短期对象的引用
比如在循环中使用的临时对象,如果不用了,在每个循环后面赋值null。
while(true){
Vector x = new Vector();
….
x = null;
}
规则17 长期引用容易引起内存泄漏
ObjectOutputStream会保留所有已序列化的对象的引用,以免被重复序列化,所以每次new的对象都不会被垃圾收集,这时候需要手动处理:
Object xx = new XXX();
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream());
out.write(xx);
out.flush();
out.reset();//此处释放引用从而不会泄漏。
规则18 用接口代替抽象类
继承用于继承父类的方法。组合用于数据的组合。
规则19 不要同时使用重载(overload)和覆盖(override)
overload在编译时起作用,override在运行时起作用。
规则20 正确使用继承表示分类关系
规则21 用组合来表示包含关系
组合(组成和聚合composition and aggregation)UML都用聚合来表示。
规则22 避免方法的副作用
设计不可变类,动作只修改状态不返回状态。查询反之。
规则23 首善之举是重构
不是copy。
规则24 选择合适的体系结构
规则25 通过Iterator,使用for或while循环访问集合元素
规则26 使用不可变类作为Set或者Map的key。
规则27 不要与集合的实现南辕北辙
规则28 谨慎的使用集合的clone方法
(默认都是浅层复制,深层复制只能自己实现或者是不可变类)
规则29 掌握集合的惯用法
1、排序,使用Collections.sort()或者有序的集合。
2、Collections.nCopies生成一个n个元素的不可变集合。帮助初始化
规则30 建议 定义完整的性能调整过程
规则31 建议 改善java运行环境
规则32 建议 减少创建对象
规则33 建议 减少循环体的代码
函数的调用,数组的操作,不要使用函数调用作为循环结束的判断标志
规则34 减少IO操作时间
规则35 正确使用JDBC编程接口
参考《高质量Java程序设计》顾小刚、谢义军、林锐等编著 电子工业出版社 2003