《重构 改善既有代码的设计》学习笔记 2 -- Extract Method(提炼函数)

重构的手法中,很大一部分是对函数进行整理,使之更恰当地包装代码。

问题来源:

     过长函数。

     这些过长的函数,往往包含太多信息,这些信息又被函数错综复杂的逻辑掩盖,不易鉴别。

 解决方案:

     使用Extract Method(提炼函数),把一段代码从原先函数中提取出来,封装成一个单独函数中。

困难:

      处理局部变量。

做法:

    1. 封装新函数:创造一个新函数,并根据函数的意图来对它命名。函数以“做什么”来命名,而不是“怎么做”。

    2. 将提炼出的代码从源函数复制到新建的目标函数当中。

    3. 仔细检查提炼出的代码,看看其中是否包含源函数的局部变量和参数。

    4. 检查是否有“仅用于被提炼代码段”的临时变量。 若有,在目标函数中将它们声明为临时变量。

    5. 检查被提炼代码段, 看看是否有任何局部变量的值被改变。 

       如果一个临时变量值被修改了,看看是否可以将被提炼代码段处理为一个查询,并将结果赋值给相关变量。

如果很难这样做,或如果被修改的变量不止一个,你就不能仅仅将这段代码原封动提炼出来。 你可能需要先使

用分离临时变量(Split Tempory Variable),然后再尝试提炼;也可以使用以查询取代变量(Replace Temp 

with Query)将临时变量消灭掉。

  6. 将被提炼代码段中需要读取的局部变量,当作参数传给目标函数。

  7. 处理完所有局部变量之后,进行变异

  8. 在源函数中,将被提炼代码段替换为对目标函数的调用。

  9. 再次编译,测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值