Effective Java学习手册
Effective Java读书笔记
-
用静态工厂方法代替构造函数
优点- 静态方法具有名字
- 静态方法被调用事不要求非得创建一个新的对象
- 返回一个原返回类型的子类型的对象
-
使用私有构造函数强化Singleton属性
-
通过私有构造函数强化不可实列化的能力
-
避免创建重复的对象
-
消除过期的对象引用
-
避免使用终结函数
-
改写equals的时候请遵守通用约定
-
改写equals事要改写hashCode
-
总是改写toString
-
谨慎地改写clone
-
考虑实现Comparable接口
-
使类和成员的可访问能力最小化
- private 私有的
- default 包级私有
- protected 受保护的
- public 公有的
-
支持非可变性
-
复合优先于继承
-
要么为继承而设计并给出文档说明,要么禁止继承
-
接口优于抽象类
-
接口只是被用于定义类型
-
优先考虑静态成员类
-
用类代替结构
-
用类层次来代替联合
-
用类来代替enum结构
-
用类和接口代替函数指针
-
检查参数的有效性
-
需要时使用保护性拷贝
-
谨慎设计方法的原型
-
谨慎地使用重载
-
返回零长度的数组而不是null
-
为导出的API元素编写文档注释
-
将局部变量的作用域最小化
-
了解和使用库
-
要求精确的答案,避免使用float和double
- 使用BigDecimal,int long
-
其他累心更合适,避免使用字符串
-
字符串的连接性能
-
通过接口引用对象
-
接口优先于反射机制
-
谨慎地使用本地方法(JNI)
-
谨慎地进行优化
-
只针对不正常的条件才使用异常
-
遵守普遍的命名惯例
-
对于可恢复的条件使用被检查的异常,对于程序错误使用运行时异常
-
避免不必要地使用检查的异常
-
尽量使用标准的异常
-
抛出的异常更适合于相应的抽象
-
每个方法抛出的异常都要有文档
-
在细节消息中包含失败-捕获信息
-
努力使失败保持原子性
-
不要忽略异常
-
对共享可变数据的同步访问
-
避免过多同步
-
永远不要在循环的外面调用wait
-
不要依赖于线程调度器
-
线程安全性的文档化
-
避免使用线程组
-
谨慎地实现Serializable
-
考虑使用自定义的序列化形式
-
保护性地编写readObject方法
-
必要时提供一个readResolve方法

浙公网安备 33010602011771号