改变函数声明&封装变量

改变函数声明:如下所示:
1.动机:一个好的函数名字能够一眼看出该函数的用途,而不必查看其实现代码。一个好的参数列表能够改变连接一个模块所需要的条件,从而去除不必要的耦合。

2.简单做法:如下所示:
1>.如果想要移除一个参数,需要先确定函数体内没有使用该参数。
2>.修改函数声明,使其成为你期望的状态。
3>.找出所有使用旧的函数声明的地方,将它们改为使用新的函数声明。
4>.测试。

3.迁移式做法:如下所示:
1>.如果有必要的话,先对函数体内部加以重构,使后面的提炼步骤易于开展。
2>.使用提炼函数重构手法将函数体提炼成一个新函数。
3>.如果提炼出的函数需要新增参数,用简单做法添加即可。
4>.测试。
5>.对旧函数使用内联函数重构手法。
6>.如果新函数使用了临时的名字,再次使用改变函数声明重构手法将其改回原来的名字。
7>.测试。

4.范例:如下所示:
1>.源代码如下所示:

function circum(radius) {
	return 2 * Math.PI * radius;
}

2>.重构代码如下所示:

function circumference(radius) {
	return 2 * Math.PI * radius;
}

封装变量:如下所示:
1.动机:对于所有可变的数据,只要它的作用域超出单个函数,就要将它封装起来。封装能提供一个清晰的观测点,可以由此监控数据的变化和使用情况,也可以轻松的添加数据被修改时的验证或后续逻辑。

2.做法:如下所示:
1>.创建封装函数,在其中访问和更新变量值。
2>.执行静态检查。
3>.逐一修改使用该变量的代码,将其改为调用合适的封装函数。每次替换之后,执行测试。
4>.限制变量的可见性。
5>.测试。
6>.如果变量的值是一个记录,考虑使用封装记录重构手法。

3.范例:如下所示:
1>.源代码如下所示:

let defaultOwner = {firstName:"Martin", lastName:"Fowler"};
spaceship.owner = defaultOwner;
defaultOwner = {firstName:"Kent", lastName:"Beck"};

2>.重构代码如下所示:

defaultOwner = {firstName:"Martin", lastName:"Fowler"};
function getDefaultOwner() {
	return defaultOwner;
}

function setDefaultOwner(arg) {
	defaultOwner = arg;
}

spaceship.owner = getDefaultOwner();
setDefaultOwner({firstName:"Kent", lastName:"Beck"});
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值