重构——1提炼函数(Extract Method)

简介: 提炼函数(Extract Method):你有一段代码可以被组织在一起并独立出来,将这段代码放进一个独立的函数中,并让函数名称解释该函数的用途。

提炼函数(Extract Method)

你有一段代码可以被组织在一起并独立出来,将这段代码放进一个独立的函数中,并让函数名称解释该函数的用途。

一、动机

1、每个函数的粒度都小,那么被复用的几率就大

2、函数的长度不是问题,关键在于函数名称和函数本体之间的语义距离

3、使高层函数读起来向一系列注释

4、如果函数都是细粒度,那么函数覆盖也会更容易些

二、做法

1、创建函数,名字要起好

2、转移代码

3、检查提炼出的代码是否引用了作用域限于原函数的变量(临时变量和源函数参数)

4、检查是否有任何的局部变量的值被提炼出的代码改变,如果有:将被提炼的代码段处理为一个查询,分解临时变量, 以查询取代临时变量

5、将被提炼代码中需要读取的局部变量,当做参数传递给目标函数

6、处理完所有的局部变量之后,进行编译

7、在原函数中,将被提炼代码段替换为对目标函数的调用,删掉多余的临时变量声明

8、编译,测试

目录
相关文章
|
5月前
|
安全 Python
使用eval函数需要注意哪些方面
使用eval函数需要注意哪些方面
39 0
|
设计模式 存储 SQL
【Java设计模式 规范与重构】 五 重构实战:基于ID生成器case(上)
【Java设计模式 规范与重构】 五 重构实战:基于ID生成器case(上)
122 0
|
设计模式 存储 Java
【Java设计模式 规范与重构】 五 重构实战:基于ID生成器case(下)
【Java设计模式 规范与重构】 五 重构实战:基于ID生成器case(下)
194 0
重构——29以数据类取代记录(Replace Record with Data Class)
以数据类取代记录(Replace Record with Data Class):你需要面对传统编程环境中的记录结构;为该记录创建一个“哑”数据对象
1553 0
|
C#
改善代码设计 —— 简化函数调用(Making Method Calls Simpler)
  系列博客       1. 改善代码设计 —— 优化函数的构成(Composing Methods)       2. 改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)       3.
960 0
重构——62提炼子类(Extract Subclass)
提炼子类(Extract Subclass):类中的某些特性只被某些实例用到;新建一个子类,将上面所说的那一部分特性移到子类中
1382 0
|
Java
重构——64提炼接口(Extract Interface)
提炼接口(Extract Interface):若干客户使用类接口中的同一子集,或者两个类的接口有部分相同;将相同的子类提炼到一个独立接口中
1511 0
重构——12提炼类(Extract Class)
提炼类(Extract Class):并发和事务的风险;某个类做了两个类做的事;建立一个新类,将相关的字段和函数从旧类搬移到新类
1946 0
重构——63提炼超类(Extract Superclass)
提炼超类(Extract Superclass):两个类有相似特性;为这两个类建立一个超类,将相同的特性搬移到超类
1740 0