《Effective Java》学习笔记之一
《代码整洁之道》读到11章开始步入我不熟悉的架构等部分,因为还没有过实际应用,暂时停止。开始学习另一本《Effective Java》。
1.
首先是构造器,当对象是固定的,不要频繁创建,比如redis配置,log4j的配置或者项目中的constant类内对象的配置,调用对应的静态工厂类或者自己创建一个静态工厂对象来达到初始化的效果。当对象属性比较多或复杂时,又不是没次都需要初始化所有属性,可以用Builder模式,这样既避免了写多个不同数量参数的构造器繁琐,也可以避免用JavaBean导致对象的不稳定(尤其是线程安全方面)。同样,builder模式的初始化也简洁明了。
2.
还有字符串的赋值,和stringBuffer的机制一样,不要不断的new新对象再赋值,可以直接赋值“XXX”,这样后续再用到“XXX”也只是一个对象,用StringBuffer来完成字符串的合并。对于不用的对象可以置null,不要再最频繁的循环里new对象等,也不要让变量的作用域超过了它的使用范围,导致生存周期加长。
3.建立了新的自定义对象(model),要记得重写equal,hashcode,CompareTo,Iterable这些方法,最好也重写下toString,但是尽量不要去重写clone。而前两个重写(equla,hashcode),虽然不是必须的,但常常是一个好的习惯,可以避免程序运行时发生不可预测的bug,而且这种bug很难定位,编译是没有问题的。
4.尽量使用for each
5.慎重使用static,不然内存开销会很大。