57条最有价值的经验

来源:互联网 发布:windows搜索索引 编辑:程序博客网 时间:2024/05/19 22:57

一、创建和销毁对象

(01)考虑用静态工厂方法代替构造函数
(02) 使用私有构造函数强化singleton属性
(03)通过私有构造函数强化不可实例化的能力
(04) 避免创建重复对象
(05)消除过期的对象引用
(06)避免使用终结函数

二、对于所有对象都通用的方法

(07)在改写equals时候请遵守通用约定
(08)改写equals时总要改写hashCode
(09)总是要改写toString
(10)谨慎地改写clone
(11)考虑实现Comparable接口

三、类和接口

(12)使类和成员的可访问能力最小化
(13)支持非可变性
(14)复合优先于继承
(15)要么专门为继承而设计,并给出文档说明,要么禁止继承
(16)接口优先于抽象类
(17)接口只是被用于定义类型
(18)优先考虑静态成员类

四、C语言结构的替代

(19)用类代替结构
(20)用类层次来代替联合
(21)用类来代替enum结构
(22)用类和接口来代替函数指针

五、方法

(23)检查参数的有效性
(24)需要时使用保护性拷贝
(25)谨慎设计方法的原型
(26)谨慎地使用重载
(27)返回零长度的数组而不是null
(28)为所有导出的API元素编写文档注释

六、通用程序设计

(29)将局部变量的作用域最小化
(30)了解和使用库
(31) 如果要求精确的答案,请避免使用float和double
(32)如果其他类型更适合,则尽量避免使用字符串
(33)了解字符串连接的性能
(34)通过接口引用对象
(35)接口优先于映像机制
(36)谨慎地使用本地方法
(37)谨慎地进行优化
(38)遵守普遍接受的命名习惯

七、异常

(39)只针对不正常的条件才使用异常
(40)对于可恢复的条件使用被检查的异常,对于程序错误使用运行时异常
(41)避免不必要地使用被检查的异常
(42)尽量使用标准的异常
(43)抛出异常要适合于相应的抽象
(44)每个方法抛出的异常都要有文档
(45)在细节消息中包含失败——捕获信息
(46)努力使失败保持原子性
(47)不要忽略异常

八、线程

(48)对共享可变数据的同步访问
(49)避免过多的同步
(50)永远不要在循环的外面调用wait
(51)不要依赖于线程调度器
(52)线程安全性的文档化
(53)避免使用线程组

九、序列化

(54)谨慎地实现Serializable
(55)考虑使用自定义的序列化形式
(56)保护性地编写readObject方法
(57)必要时提供一个readResolve方法

原创粉丝点击