《Java代码与架构之完美优化-实战经典》笔记

1.避免在一条语句中声明或赋值多个变量,一行语句只声明一个变量,避免int a,b;的情况
2.避免赋予临时变量过多的角色,一个变量只有一种实际意义,即单一职责。
3.避免使用魔法数字,程序里避免出现大量直接数字(默认0和1是非魔法数字),魔法数字需要用变量声明用途,避免直接使用数字。
4.使用bigdecimal进行精确计算,有些时候在计算浮点数时需要精确计算,这是就可以使用BigDecimal
5.要习惯于用泛型代替原生类型(原生类型降低了程序的可读性,同时推迟了潜在bug的被发现时间一无所知
在Java中,泛型是在编译器中实现的而不是在虚拟机中实现的,虚拟机对泛型。因此编译器一定要把泛型类型修改成普通类,才能够在虚拟机中执行,在Java中,这种技术叫做擦除,也就是用Object类型替换泛型)。使用泛型可以提高潜在的性能收益,具体如何使用网上有很多相关文章。
6.通过把参数提升为类成员变量来优化过长参数,如果一个函数参数列表过长,可以考虑将参数提升为类成员变量。
7.不要重写静态方法,重写静态方法意义不大,最终执行的还是父类的静态方法,参考类初始化过程

类初始化优先级关系
优先级一:父类>子类
优先级二:静态变量>成员变量>构造器
对象初始化详细过程:分配内存空间-默认初始化值-初始化值-块初始化值
8.避免仅使用clone方法对对象进行复制(浅拷贝),浅拷贝的实质是直接内存栈区的复制,除非必要,不要克隆对象,即使克隆也要尽可能使用深度克隆方法。使用深度克隆当被克隆对象修改时克隆后的值并不会发生改变。
9.避免深度耦合的类关系
深度耦合有很多表现形式,以下是成员变量或方法之间的关系是典型的两种现象:
1.在不具有父子关系的类中,A类经常使用B类的某个成员变量或方法
2.在具有父子关系的类中,两个子类具有相同的成员变量或方法,父类里某一个成员变量或方法只在其中一个子类里面使用
10.设计短小精悍、职责明确的类,避免臃肿,以下有三种类瘦身方法
1.如果有很多成员变量赋值操作,可以使用BeanUtilss的成员变量赋值方法
2.如果业务逻辑多,可以把一些相关操作放到一个suport类中
3.如果成员变量过多,可以尝试分解类,提炼出DTO(Data Transfer Object,数据传输对象,如数据库表结构bean类),或者DVO(Data Value Object,数据价值对象,如form)数据对象类

猜你喜欢

转载自blog.csdn.net/bathe123/article/details/82767048
今日推荐