重构——57字段上移(Pull Up Field)

字段上移(Pull Up Field)

两个子类拥有相同的字段;将该字段移至超类

一、动机

去除重复

二、做法

1、针对待提升之字段,检查它们所有的被使用点,确认它们以同样的方式被使用

2、如果这些字段名称不同,先将它们改名,使每一个名称都和你想为超类取的名称相同

3、编译,测试

4、在超类中新建一个字段

5、移除子类中的字段

6、编译,测试

7、考虑对超类的新建字段使用Self Encapsulate Field

时间: 2024-09-20 20:21:56

重构——57字段上移(Pull Up Field)的相关文章

重构——18自封装字段(Self Encapsulate Field)

自封装字段(Self Encapsulate Field) 你直接访问一个字段,但与字段之间的耦合关系逐渐变得笨拙:为这个字段建立取值/设置函数,并且只以这些函数来访问字段 一.动机 如果你想访问超类中的一个字段,却又想在子类中将对这个字段的访问改为一个计算后的值,这就是该用Self Encapsulate Field的时候 二.做法 1.为待封装的字段建立取值/设值函数 2.找出该字段所有的引用点,将它们全部改为调用取值/设值函数 3.将该字段声明为private 4.复查,确保找出所有的引用

重构——58函数上移(Pull Up Method)

函数上移(Pull Up Method) 有些函数,在各个子类中产生完全相同的结果:将该函数移至超类 一.动机 避免重复 二.做法 1.检查待提升函数,确定它们是否完全一致 2.函数签名不同的时候,先弄成一样的 3.在超类中新建一个函数,将某一个待提升函数的代码复制到其中,做适当的调整,然后编译 4.移除一个待提升的子类函数 5.编译,测试 6.逐一移除待提升的子类函数,直到只剩下超类中的函数为止.每次移除后都需要测试 7.观察该函数的调用者,看看是否可以改为使用超类类型的对象

重构——61字段下移(Push Down Field)

字段下移(Push Down Field) 超类中某个字段只被部分子类用到:将这个字段移到需要它的子类中去 一.动机 只有某些子类需要超类中的一个字段 二.做法 1.在所有的子类中声明该字段 2.将该字段从超类中删除 3.编译,测试 4.将该字段从不需要它的子类中删除 5.编译,测试

代码重构(五):继承关系重构规则

陆陆续续的发表了多篇关于重构的文章了,还是那句话,重构是一个项目迭代开发中必不可少的一个阶段.其实重构伴随着你的项目的整个阶段.在前几篇关于重构的文章中我们谈到了函数的重构.类的重构.数据的重构以及条件表达式的重构,那么今天咱们就来聊聊继承关系的重构.当然还是延续前几篇博客的风格,我们在博客中的代码实例依然使用Swift语言来实现,当然还是那句话,使用什么语言无所谓,关键是看重构的场景以及重构的思想. "重构"不仅仅可以改善你既有的代码设计,还可以改变你组织代码的思路,使你的程序在设计

《重构:改善既有代码的设计》—重构列表

重构列表重构:改善既有代码的设计Add Parameter(添加参数) Change Bidirectional Association to Unidirectional(将双向关联改为单向关联) Change Reference to Value(将引用对象改为值对象) Change Unidirectional Association to Bidirectional(将单向关联改为双向关联) Change Value to Reference(将值对象改为引用对象) Collapse H

《重构:改善既有代码的设计》—第2章2.1节何谓重构

第2章 重构原则 重构:改善既有代码的设计 前面所举的例子应该已经让你对重构有了一个良好的感受.现在,我们应该回头看看重构的关键原则,以及重构时需要考虑的某些问题. 2.1 何谓重构 我总是不太喜欢下定义,因为每个人对每样东西都有自己的定义.但是既然在写书,总得选择自己满意的定义.在重构这个概念上,我的定义以Ralph Johnson团队和其他相关研究成果为基础. 首先要说明的是:视上下文不同,"重构"这个词有两种不同的定义.你可能会觉得这挺烦人的(我就是这么想的),不过处理自然语言本

重构——65折叠继承体系(Collapse Hierarchy)

折叠继承体系(Collapse Hierarchy) 超类和子类之间无太大区别:将它们合为一体 一.动机 1.继承体系很容易变得过分复杂 2.重构了继承体系后,有些类没有用了,需要把子类和超类合并起来 二.做法 1.选择想要移除的类:是超类还是子类 2.Pull Up Field,Pull Up Method或者 Push Down Method, Push Down Field 3.每次移动后,编译并测试 4.调整即将被移除的那个类的所有引用点,令它们改而引用合并后留下的类.这个动作将会影响变

重构——63提炼超类(Extract Superclass)

提炼超类(Extract Superclass) 两个类有相似特性:为这两个类建立一个超类,将相同的特性搬移到超类 一.动机 减少重复代码 二.做法 1.为原本的类新建一个空白的抽象超类 2.运用Pull Up Field,Pull Up Mehtod,Pull Up Constructor Body逐一将子类的共同元素上移到超类 3.每次上移后,编译并测试 4.检查留在子类中的函数,Extract Method,Pull Up Method,也许可以Form Template Method 5

PHP获取mysql数据表的字段名称和详细信息的方法_php技巧

首先我们需要了解下查询MySQL数据库/表相关信息的SQL语句: 复制代码 代码如下: SHOW DATABASES                                //列出 MySQL Server 数据库. SHOW TABLES [FROM db_name]                    //列出数据库数据表. SHOW CREATE TABLES tbl_name                    //导出数据表结构. SHOW TABLE STATUS [FR