重构心得分享----拆分循环

最近自己再看《重构-改善既有代码的设计》,这是一本关于如何让大家去发现需要重构的代码和如何去进行重构。

先分享一个今天刚刚看的,标题叫拆分循环,作者认为一个循环里面尽可能的只做一件事情。

举一个粒子,比如一个循环里面有两件事,一个是计算收入总值(数据累加),一个是找出最小收入

let total = 0
let data = [15, 25, 3, 65, 15]
let min = data[0]
for (let i = 0; i < data.length; i++) {
 total += data[i]
 if (data[i] < min) {
 min = data[i]
 }
}
console.log(total, min)

对于这样代码,我们首先认为 既然可以一次性作为两件事为什么要写两个for循环去做这件事呢?

我先给大家看一下 重构后的代码 在给大家讲解 它那样做的 好处是什么

第一次重构如下

function totalData() {
 let total = 0
 for (let i = 0; i < data.length; i++) {
 total += data[i]
 }
 return total
}

function minData() {
 let min = data[0]
 for (let i = 0; i < data.length; i++) {
 if (data[i] < min) {
 min = data[i]
 }
 }
 return min
}

将两件事拆开了,并且封装成了函数

第二次重构

function totalData() {
 return data.reduce((total, p) => total + p)
}

function minData() {
 return Math.min(...data)
}

到这一步在和第一次对比 你就会明显发现没有了for循环了 取而代之的是管道的形式

这样做的好处是 当你需要重新修改某一件事情,你就可以直接写个改件是的业务逻辑,而不用去看这个修改会不会影响到第二件事情。同时使用管道方法替代for循环也是一种  代码的提升。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值