重构-改善既有代码的设计-重新组织数据
发布日期:2021-08-26 18:18:33 浏览次数:72 分类:技术文章

本文共 1643 字,大约阅读时间需要 5 分钟。

hot3.png

重新组织数据相关重构手法

 

1.Self Encapsulate Field(自封装字段)(你直接访问一个字段,但是字段之间的耦合变得笨拙,为这个字段建立setter getter 并只用函数来访问字段)

2.Replace Data Value with Object(用对象取代数据值)(你有一个数据项,需要和其他数据和行为一起才有意思,那就把数据项变为对象)

3.Change Value to Reference(把值对象改为引用对象,你从一个类衍生出许多彼此相等的实例,希望把他们替换为同一个对象,把这个值对象变为引用对象)

4.Change Reference to value(把引用对象改为值对象 )(你有一个引用对象,很小切不可变,而且不易管理,把他变为一个值对象)

5.Rpplace Aarray with object(以对象取代数组)(你有一个数组,其中的元素各自代表不同的东西,以对象替换数组,对于数组中的每个元素,以一个字段来表示)

6.Duplicate Observed Data(复制”被监视数据“,你有一些领域数据置身于GUI控件中,而领域函数需要访问这些数据。将该数据复制到一个领域对象中建立Observer模式,用于同步领域对象和GUI对象内的重复数据)

7.change unidirectional associarion to bidirectional(把单向关联改为双向关联)(2个类都需要使用对方特性,但其间只有一条单向链接,添加一个反向指针,并修改函数能够同时更新到2条链接)

8.change bidirectional association to unidirectional(把双向关联改为单向关联)(2个类之间有双向关联,但其中一个类如今不再需要另外一个类的特性。去除不必要的关联)

9.replace magic number with sysbolic constant(以字面常量取代魔数)(你有衣蛾字面数值,带有特别含义,创造一个常量,根据其意义为他命名,并将上述的字面值替换为这个常量)

10.encapsulate field(封装字段)(你的类中存在一个public字段,将他申明为private 并且提供相应的访问函数)

11.encapsulate collection(封装集合)(有一个函数返回一个集合,让这个函数返回该集合的一个只读副本,并在这个类中提供添加移除集合元素的函数)

12.replace record with data class(数据类取代记录),比如查询数据库的时候,使用类来替代记录会更好)

13.replace type code with class(类取代类型码),类之中有一个数值类型码,但是它并不影响类 的行为。用一个新的类来替换该数值码)

14.replace type code with subclass (子类取代类型码)(你有一个不可变的类型码他会影响类的行为,子类取代这个类型码)

15.replace  type code  with state/strategy(state/strategy取代类型码)(你有一个类型码,它会影响类的行为,但你无法通过继承来消除它。以状态对象取代类型码)

做法:在超类中建立一个查询函数用于返回状态码,在每个子类中重写该函数,返回确切的状态码,在原类中建立一个字段,来保存新建的状态对象,调整原类中负责查询类型码的函数,把查询动作转发给状态对象,调整原类中为类型码设置的函数,吧一个恰当的状态对象子类赋值给保存状态对象的那个字段。

16.replace subclass with fields(字段取代子类)(你的各个子类唯一差别只在返回常量数据的函数身上,修改这些函数使他们返回超类中的某个字段,然后销毁子类)

 

 

转载于:https://my.oschina.net/kkkkkkkkkkkkk/blog/675917

转载地址:https://blog.csdn.net/weixin_33894640/article/details/92676385 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:JS 操作节点
下一篇:关于tty驱动从linux2.6.30版本移植到linux2.6.14的问题

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月11日 23时44分58秒