Vincent.Chan‘s Blog

常用链接

统计

积分与排名

网站

最新评论

Practical Java

1一般技术(GeneralTechniques)


实践1:参数以byvalue方式而非byreference方式传递

实践2:对不变的data和objectreference使用final

实践3:缺省情况下所有non-static函数都可被覆写

实践4:在arrays和vectors之间慎重选择

实践5:多态(po1ymorphism)优于instanceof

实践6:必要时才使用instanceof

实践7:一旦不再需要objectreferences,就将它设为null

2对象与相等性(ObjectsandEquality)


实践8:区分reference型别和primitive型别

实践9:区分==和equals()

实践10:不要依赖equals()的缺省实现

实践11:实现equals()时必须深思熟虑

实践12:实现equals()时优先考虑使用getClass()

实践13:调用super.equals()以唤起baseclass的相关行为

实践14:在equals()函数中谨慎使用instanceof

实践15:实现equals()时需遵循某些规则

3异常处理(ExceptionHandling)


实践16:认识[异常控制流](exceptioncontrolflow)机制

实践17:绝对不可轻忽异常(Neverignoreanexception)

实践18:千万不要遮掩异常(Neverhideanexception)

实践19:明察throws子句的缺点

实践20:细致而全面地理解throws子句

实践21:使用finally避免资源泄漏(resourceleaks)

实践22:不要从try区段中返回

实践23:将try/catch区段置于循环之外

实践24:不要将异常(exceptions)用于流程控制

实践25:不要每逢出错就使用异常(exceptions)

实践26:在构造函数(constructors)中抛出异常

实践27:抛出异常之前先将对象恢复为有效状态(validstate)

4性能(Performance)


实践28:先把焦点放在设计.数据结构和算法身上

实践29:不要倚赖编译期(compile-time)优化技术

实践30:理解运行期(mntime)代码优化技术

实践31:如欲进行字符串接合,StringBuffer优于String

实践32:将对象的创建成本(creationcost)降至最小

实践33:慎防未用上的对象(unusedobjects)

实践34:将同步化(synchronization)降至最低

实践35:尽可能使用stack变量

实践36:使用static.final和private函数以促成inlining

实践37:instance变量的初始化一次就好

实践38:使用基本型别(primitivetypes)使代码更快更小

实践39:不要使用Enumeration或Iterator来遍历vector

实践40:使用System.arraycopy()来复制arrays

实践41:优先使用array,然后才考虑Vector和ArrayList

实践42:尽可能复用(reuse)对象

实践43:使用缓式评估(延迟求值,lazyevaluation)

实践44:以手工方式将代码优化

实践45:编译为本机代码(Compiletonativecode)

5多线程(Multithreading)


实践46:面对instance函数,synchronized锁定的是对象(objects)而非函数(methods)或代码(code)

实践47:弄清楚synchronizedstatics函数与synchronizedinstance函数之间的差异

实践48:以[private数据十相应访问函数(accessor)]替换[public/protected数据]

实践49:避免无谓的同步控制

实践50:访问共享变量时请使用synchronized或volatile

实践51:在单一操作(singleoperation)中锁定所有用到的对象

实践52:以固定而全局性的顺序取得多个locks(机锁)以避免死锁

实践53:优先使用notifyAll()而非notify()

实践54:针对wait()和notifyAll()使用旋锁(spinlocks)

实践55:使用wait()和notifyAll()替换轮询循环(pollingloops)

实践56:不要对lockedobject(上锁对象)之objectreference重新赋值

实践57:不要调用stop()或suspend()

实践58:通过线程(threads)之间的协作来中止线程

6类与接口(ClassesandInterfaces)


实践59:运用interfaces支持多重继承(multipleinheritance)

实践60:避免interfaces中的函数发生冲突

实践61:如需提供部分实现(partialimplementation)请使用abstractclasses(抽象类)

实践62:区分interface.abstractclass和concreteclass

实践63:审慎地定义和实现immutableclasses(不可变类)

实践64:欲传递或接收mutableobjects(可变对象)之objectreferences时,请实施clone()

实践65:使用继承(inheritance)或委托(delegation)来定义immutableclasses(不可变类)

实践66:实现clone()时记得调用super.clone()

实践67:别只依赖finalize()清理non-memory(内存以外)的资源

实践68:在构造函数内调用non-final函数时要当心

附录:如何学习Java

进阶读物(FurtherReading)

索引(Index)


posted on 2006-02-20 21:10 Vincent.Chen 阅读(133) 评论(0)  编辑  收藏 所属分类: Java


只有注册用户登录后才能发表评论。


网站导航: