Android重构

2019-12-02  本文已影响0人  ZLPY

重构原则:

1.重构后容易理解2.重构后容易新增新功能并且几乎不改动原有逻辑3.原有逻辑容易修改

1.避免一个函数的代码量太大,太大要抽取,同时变量要详细描述其功能,尽量避免使用注释去解释功能

2.保证类的单一原则,即一个类只有个功能不要将本属于其他类的逻辑写到本类里面

3.类保证开放封闭原则,即外界的类不能修改本类内部逻辑,只能调用封装好的函数,不能调用其变量,只能本类去修改,对于类中的变量不能直接访问修改要通过函数修改,目的就是为了降低耦合度,防止改一处代码,其他都要改,封装就是进行了代码隔离以及复用,封装可以容易理解

4.消除重复代码

5.重构不能忽视性能

二:需要重构的地方

一:函数重构

1.需要注释的代码需要单独抽取成函数,因为便于理解和维护,以及条件表达式和循环表达式

2.如果函数的参数列表很长,可以把参数列表封装成对象,这样易于修改

3.把需要多处小修改的代码放到同一个类中

4.如果一个函数引用了其没有所在类的类的大量变量则应该将其移到其引用的类中

5、两个或者多个类拥有相同字段或者参数应该放到同一个类中

6.两个函数功能一样,参数列表不同需要重构

7.数据类需要有get && set 方法

8.子类只使用了父类的部分,需要重构

9.复杂的表达式需要抽取成变量

10.尽量不要一个临时变量多次赋值,影响其可读性

11.不要对方法的参数赋值,除非方法的功能就是这样,因为如果参数是引用的话,会更改原有的参数

12.如果方法里面的临时变量很多,可以抽到一个类里面

二、对象重构

1.如果一个类的字段大量被其他类用到,而本类却很少用,可以考虑将该字段移到大量使用其的类

2.类的拆分,如果一个类包含了多个功能,要考虑能否将功能拆分成不同的类

3.如果一个类不在承担足够的责任,不再有单独存在的理由,则将其合并到其他类中

4.有类 A,B,C C被B引用,禁止A通过获取C对象后,操控C的方法与字段,应该直接在B中代理C的方法与字段,因为一旦C的字段改变,A就要改变,如期其他类也这样引用,其他类也需要改,这样就造成了多处修改,但是直接在B中代理C的方法与字段在可以避免这个情况,这种方法叫做封装委托

5.对于要扩展的不能修改的类的方法,应该封装一下

6.值对象和引用对象的相互转换

7.当引用另一个类的集合时不要直接引用,要用封装好的函数

8.当两个函数有很多相同的代码逻辑时,考虑合并成一个函数

三、简化表达式

1.如果条件表达式很复杂需要抽取成方法

2.合并返回值一样的表达式

3.合并重复调用的代码

4.循环中去除标记变量替换成break或者continue或者return

5.尽量使用多个if语句替换嵌套的if-else或者if-else-if

6.用多态取代条件表达式适用于表达式被多个地方使用

四:简化函数调用

1.当函数的参数很多时,可阅读性差,可能需要将参数抽取成函数,前提是能够抽取,而且容易维护,因为多处调用来传入参数,当需要修改时,调用处都需要修改,但是如果没有参数或者参数列表很短则修改的程度则可能随之减少

2.一个类的字段只能被赋值一次时,最好在构造函数中赋值,并且不要设置setter&&getter

3.当函数只有本类使用时请将权限设置为private规范使用

五:类的重构

1.当类的某些特性只被部分特性使用,尽量将其抽取到子类中

2.当两个类有很多相似功能,提取成父类,

3.接口的抽取

4.如果父类和子类没有太大区别,并且往后没有扩展的可能则浪费代码,应该合并

5.使用组合优于继承(使用前提:是子类只使用部分的父类的内容,可以使用组合或者委托,如果全部使用父类,则用继承),一般用于委托类负责可变数据

上一篇下一篇

猜你喜欢

热点阅读