一个bug引发的思考

一.起因:

会议室内,产品把文档详细解释完之后,说道:快六月底了,这个季度要结束了,这个项目是这个季度的kpi,有没有奖金靠你们了。你们看下要多久实现。
美术:这个最少要一个礼拜。
后台:apk那边有做过这个功能,这边改动不大,两三天就行。
测试:上次apk的这个活动测了两周,这个后台不用怎么测了,但是最少也要一周。
产品:那就两周吧,开发一周,测试一周,后面预留一周看数据。
我(前端):???(小朋友你是否有很多问号)。

最后开发时间延长了三天,也就是开发一周又三天,测试一周,理由是后台改动不大,做好了可以先给前端写着逻辑处理,美术好了之后两三天应该够了…

就这样,一个紧急的项目开发就出来了

二.过程:

一周过去了,美术终于给到资源了,后台也终于可以联调了,好嗨森,正准备大干特干,叮咚,你的需求有调整,请查收~
我:????
经过紧张而又刺激的开发,3天时间过去了(第二周周三),终于把需求都搞完了,如约把体验版交给了测试,想着按时完成了,后面还有一周时间测试,我可以慢慢捋捋代码,做一些调整优化,检查检查bug。
又三天过去了(第二周的周五),叮咚,你的需求有调整,请查收~
我:???!!!
终于通过加班,版本如约上线了(第三周周三),上线后未发现明显问题,游戏内收入也有小步提升,终于松了口气~~

三.bug的发现:

在第二周调整优化的时候(当时测试未测到这部分功能),一段代码映入了眼帘:

allRankInfo.forEach(element => {
	if (element.matchID === msg.matchID) {
		element = msg;
	} 
});

这段代码本意是,当收到后台推送的时候,更新本地的相关数据。但是,我居然把msg数据赋值给了临时变量,等于本地数据并没有更新。

四.思考:

这个bug在后面功能测试的时候肯定也是能发现的,但是让我值得反思的是自己写出了这样的bug,要思考下why?
我后来想了想,原因是当时开发过程太紧,脑袋专注于接口后面的逻辑,写for循环的时候代码提示了foreach,然后回车键确定了,接着就是一些列的想当然,写出了一段错误的代码。当时本意应该是用for循环,然后修改allRankInfo[index]的值,这才是正确的写法,当然后面代码优化的时候,我把allRankInfo改掉了,不用数组,用key-value的方式,更加方便快捷。这也是后话了

五.收获:

1.代码开发还是需要时间优化的,前期赶项目可以以功能实现为目的,后面一定要及时优化,方便维护
2.代码质量有待提高,要多思考,实现需求的方式有多种,选择合适的最重要
3.不能着急,越急越容易出bug,写完代码最好简单检查一下
4.前端数据缓存有唯一key值的,使用key-value保存,更合适

六.思维发散:

顺便总结下js数组循环的一些坑,温故知新:
1.foreach循环return是无效的,return是跳出当前函数,而forEach本身就是函数,写一个function,用for循环,return是可以的
2.js的some和every:
every()与some()方法都是JS中数组的迭代方法。
every()是对数组中每一项运行给定函数,如果该函数对每一项返回true,则返回true。
some()是对数组中每一项运行给定函数,如果该函数对任一项返回true,则返回true。

七.分享交流

欢迎大家留言分享下开发过程中写过哪些好笑的bug~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值