0.编程应该尽可能简单,以同样的方式实施同样的过程,不断积累惯用法,将其标准化。



 



1.考虑用静态工厂方法代替构造器,即getInstance()、newInstance()、valueOf() 等。



 



2.当类的构造器或者静态工厂中具有多个参数时,请选择Builder模式设计此类。



 



3.实现Singleton,除了用静态工厂方法+私有构造器外,还有一种更好的方法,即:单无素的枚举类型。



 



4.避免创建不必要的对象,要优先使用基本类型而不是装箱基本类型,要当心无意识的自动装箱。



 



5.当你应该重用现有对象的时候,请不要创建新的对象。



 



6.消除过期的对象引用,警惕在数组、缓存、监听器或其它回调中发生内存泄漏问题。



 



7.避免使用终结方法,不应该依赖终结方法来更新重要的持久状态,使用终结方法有一个非常严重的性能损失。



 



8.覆盖equals时请遵守通用约定,一旦违反了equals约定,当其他对象面对你的对象时,你完全不知道这些对象的行为会怎么样。



 



9.一个类型的任何重要属性也将适用于它的子类型,因此为该类型编写的任务方法,在它的子类型上也应该同样运行得很好。



 



10.始终要覆盖toString,提供好的toString实现可以使类用起来更加舒适。



 



11.谨慎地覆盖clone方法,考虑提供一个拷贝构造器或拷贝工厂代替clone方法。



 



12.永远不要让客户去做任何类库能够替客户完成的事情。



 



13.设计一个类时,应当尽可能地使每个类或者成员不被外界访问。



 



14.在公有类中,不应该直接暴露数据域,而应使用访问方法。



 



15.使类的可变性最小化,如果类不能被做成不可变的,也应该尽可能地限制它的可变性。



 



16.复合优先于继承,与方法调用不同的是,继承打破了封装性,只有当子类真正是超类的子类型时,才适合用继承。



 



17.设计一个超类时,超类的构造器决不能调用可被覆盖的方法。



 



18.接口优于抽象类,现有类可以很容易被更新,以实现新的接口。



 



19.接口应该只被用来定义类型,它们不应该用来导出常量。



 



20.用函数对象表示策略,函数指针的主要用途就是实现策略模式,在Java中要声明一个接口表示该策略。



 



21.不要在新代码中使用原生态类型,如果使用原生态类型,就失掉了泛型在安全性和表述性方面的所有优势。



 



22.泛型列表优先于数组。



 



23.优先考虑泛型,优先考虑泛型方法。



 



24.请用enum代替int常量。



 



25.不要使用枚举的序数导出与它关联的值,应该要将它保存在一个枚举成员变量中。



 



26.请用EnumSet代替位域,用EnumMap代替序数索引。



 



27.虽然枚举类型不可扩展,但可以通过实现接口,对它进行模拟扩展。



 



 



 



 



 



 



 



 



 



本博文会长期,持续的更新~~~:)