如何编写高效率Java(检查笔记)

大量的工作之后,千万不要忘了重新检查自己的代码质量和风格,agile check?

 

规则1 用时间频度来确定异常情况
异常Exception的捕捉是会增加额外开销的。所以尽量避免过多的异常捕捉。越是经常调用的代码,越是要较少或者避免try…catch..finally。
细节1、左边的代码效率比右边的高(在for外捕获异常效率比每个循环开销小)

try{
for(){}
}
catch(Exception e){
 
}
for(){
 try{
 }
 catch(Exception e){
 
 }
}

细节2、finally中的return或者抛出的异常会产生complete abrupt结束。
try{
throw new Exception("Hello");
}
finally{
return 0; //此举使得Hello这个异常不会被上层看到。因为finally这里把异常抛弃,而返回0了。
}

 

规则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 aggregationUML都用聚合来表示。

规则22 避免方法的副作用

设计不可变类,动作只修改状态不返回状态。查询反之。

规则23 首善之举是重构

不是copy

规则24 选择合适的体系结构

规则25 通过Iterator,使用forwhile循环访问集合元素

规则26 使用不可变类作为Set或者Mapkey

规则27 不要与集合的实现南辕北辙

规则28 谨慎的使用集合的clone方法

(默认都是浅层复制,深层复制只能自己实现或者是不可变类)

规则29 掌握集合的惯用法

1、排序,使用Collections.sort()或者有序的集合。

2Collections.nCopies生成一个n个元素的不可变集合。帮助初始化

规则30 建议 定义完整的性能调整过程

规则31 建议 改善java运行环境

规则32 建议 减少创建对象

规则33 建议 减少循环体的代码

函数的调用,数组的操作,不要使用函数调用作为循环结束的判断标志

规则34 减少IO操作时间

规则35 正确使用JDBC编程接口

参考《高质量Java程序设计》顾小刚、谢义军、林锐等编著 电子工业出版社 2003

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值