前言

好代码不是一次写成的, 任何人写的任何代码都有bug. 所以对代码的不停重构就是必须的. 如果不对代码进行重构那么随着体量的增大, 根本不能维护.

既然要重构那么就要遵循一系列手法, 下面我们先来讨论重构手法中运用最多的重新组织函数中的提炼函数

每个提炼手法我都会以英文解释+数字标注的形式

提炼函数

几乎所有的问题根源都来自过长的函数, 因为它们包含了太多的信息, 这些信息又被函数错综复杂的逻辑掩盖, 不易鉴别. 对付过长的函数, 一项最有效的手法是提炼函数(110 Extract Methods), 就是把复杂函数的内部分解为多个函数. 但是非常重要的是关于新函数的名命. 应该可以通过对新函数命名直接解释新函数的用途.

提炼中

这种方法的难点在于处理局部变量, 其中又分为临时变量和参数.

关于临时变量的重构

  1. 对于过多的临时变量, 可以使用把临时变量替换成一个查询函数的手法, 也就是(120 Replace Temp with Query).
  2. 如果很多地方使用了某个临时变量, 我们应该先运用切割临时变量的手法 (128 Split Temporary Variable).
  3. 如果临时变量过于混乱, 那就直接把方法变成一个对象 (135 Replace with Method Object). 这是最终解决方案.

关于参数的重构

参数带来的问题要少一点, 但前提是你不能把应该当作参数的值在函数内赋值, 如果你这么做了, 就应当把函数内的赋值放回传参中 (131 Remove Assignments to Parameters).

提炼后

函数分解完毕后, 我们可能会发现能改进的算法, 这时候就可能要更换算法 (139 Substitute Algorithm).

提炼意义

  1. 提炼后, 函数的粒度很小, 复用的机会更大.
  2. 这会使函数名本身就是注释, 更方便理解.
  3. 因为粒度小, 所以对函数的覆写也很容易.

总结

过长的函数不利于维护, 所以提炼函数是非常重要重构手法, 而提炼的难点在于局部变量.

THE END
开启精彩搜索

历史搜索

用户名或邮箱
密码
用户名
密码
重复密码
邮箱
注册
找回密码
注册 登录
邮箱
邮箱验证码
发送验证码
59秒后可重发
新密码
重复密码
请选择支付方式
余额支付

购买将消耗【10

微信支付
微信扫码支付 0 元
[ 04分50秒 ]
请使用微信扫一扫
扫描二维码支付
支付宝支付
支付宝扫码支付 0 元
[ 04分50秒 ]
请使用支付宝扫一扫
扫描二维码支付
已完成支付
未完成支付

请输入验证码

点击验证码可以刷新

你确认吗?

确认

2024年10月1日

新增

新增