effective java 第一版中的规则
1、考虑用静态工厂方法代替构造函数
2、使用私有的构造函数强化singleton属性
3、通过私有构造函数强化不可实例化的能力
4、避免创建重复的对象 可以通过放在static代码块中来重复利用
5、消除过期的对象引用 主要针对的是像数据库连接池这样的需要自己来管理内存的程序
6、避免使用终结函数 finalizer
7、改写equals的时候要遵守通用的规定 规定的等价关系
自反性、对称性、传递性、一致性
8、改写equals的时候总要改写hashCode 方法 固定2个对象相等,那么它们的hashCode一定要相等
9、总是要改写toString方法 便于println打印该类的基本信息,而不是它的内存地址
10、谨慎的改写clone 要确保clone出来的对象不会影响原来的对象,一般通过实现 Clonable接口
11、考虑实现Comparable接口
12、使类和成员的可访问性最小 确保所有的共有的静态域不会被修改
13、支持非可变性
14、组合优于继承
15、要么专门为继承而设计、并给出文档说明,要么禁止继承
16、接口优于抽象类 抽象类的演化比接口的演化容易的多。设计接口的时候一定要非常谨慎,
以为如果修改接口中的方法的时候,所有实现了该接口的类都要实现这个方法。骨架即抽象类,实现的是继承的接口的最基本的一些功能。
17、接口只是被用于定义类型
18、优先考虑静态成员类
19、用类替代借口
20、用类层次来代替联合
21、用类替代enum结构
22、用类和接口替代函数指针
23、检查参数的有效性
24、需要时使用保护性拷贝
25、谨慎设计方法的原型
26、谨慎的使用重载
27、返回0长度的数组,而不是null
28、为所导出的API元素编写文档注释
29、将局部变量的作用域最小化
30、了解和使用库
31、如果要求精确的结果,请避免使用float和double 推荐使用BigDecima,或者long来进行货币的运算
32、如果其他类型更合适,则劲量避免使用字符串
33、了解字符串连接的性能
34、通过接口引用对象
35、接口优于反射机制
36、谨慎的使用本地化方法
37、谨慎的进行优化
38、遵守普遍的命名规范
39、只针对不正常的条件才使用异常
40、对于可恢复的条件使用编译时的异常,对了程序错误使用运行时的异常
42、劲量使用标准的异常
43、抛出的异常要适合于对应的抽象
48、对共享可变数据的同步访问
49、避免过多的同步
50、不要在循环的外面调用wait
51、不要依赖于线程调度器