重新组织数据
数据结构在程序中扮演着重要的角色,因此需要一组重构手法专门用于数据结构的组织;
1.拆分变量:变量有各种不同的用途,其中某些用途会很自然地导致 临时变量被多次赋值,“循环变量”和“结果收集变量”就 是两个典型例子,如果它们被赋值超过一次,就意味它们在函数中承担了一个以上的责任。如果变量承担多个责任,它就应该被替换(分解)为多个变量,每个变量只承担一个责任;
2.字段改名:命名很重要,对于程序中广泛使用的记录结构,其中字段的命名格外重要;记录结构中的字段可能需要改名,类的字段也一样。在
类的使用者看来,取值和设值函数就等于是字段;
3.以查询取代派生变量:在一处修改数据,却在另一处造成难以发现的破坏,所以强烈建议尽量把可变数据的作用域限制在最小范围,所以尽可能的以查询取代派生变量;
4.将引用对象改为值对象:引用对象数据结构容易变化,值对象不变化,这导致引用对象变得不那么可控,可能会导致问题;
5.将值对象改为引用对象:一个数据结构中可能包含多个记录,而这些记录都关联到同一个逻辑数据结构,如果当前数据结构不会改变,多处都会使用,如果当做值对象,那么会复制n份,导致内存空间浪费,这样情况将其成为引用对象最好;
数据结构在程序中扮演着重要的角色,因此需要一组重构手法专门用于数据结构的组织;
1.拆分变量:变量有各种不同的用途,其中某些用途会很自然地导致 临时变量被多次赋值,“循环变量”和“结果收集变量”就 是两个典型例子,如果它们被赋值超过一次,就意味它们在函数中承担了一个以上的责任。如果变量承担多个责任,它就应该被替换(分解)为多个变量,每个变量只承担一个责任;
2.字段改名:命名很重要,对于程序中广泛使用的记录结构,其中字段的命名格外重要;记录结构中的字段可能需要改名,类的字段也一样。在
类的使用者看来,取值和设值函数就等于是字段;
3.以查询取代派生变量:在一处修改数据,却在另一处造成难以发现的破坏,所以强烈建议尽量把可变数据的作用域限制在最小范围,所以尽可能的以查询取代派生变量;
4.将引用对象改为值对象:引用对象数据结构容易变化,值对象不变化,这导致引用对象变得不那么可控,可能会导致问题;
5.将值对象改为引用对象:一个数据结构中可能包含多个记录,而这些记录都关联到同一个逻辑数据结构,如果当前数据结构不会改变,多处都会使用,如果当做值对象,那么会复制n份,导致内存空间浪费,这样情况将其成为引用对象最好;