记一次代码优化

review团队成员代码时,发现了这么一段代码

一眼看过去还以为有错误,黄色的部分还有ide提示的红线,but,求豆麻袋,仔细看过发现黄色的部分是在动态创建变量,而红线部分是在使用这些被动态创建的变量......全程无注释,可想而知,会让后来的维护者口吐多少芬芳。于是,我决定来优化这部分代码。

首先我们来看看这部分代码做了什么事:其实是在处理用户的一些行为的统计数据,在我们的系统中,这部分人会有多个身份记录,所以如果不进行合并处理,一个人的数据会被展示多次,在有些业务中是分散在不同的身份里,真实数据是要累加的,而有些数据是会被重复的展示。

所以,他用动态创建变量的方式,将不同业务合并后的数据分别存入。然后再覆盖老数据。

好,接下来我们来分析这段代码的问题。

问题一,真的需要中间变量吗?

思考后的答案是不需要,我们只需要做两件事

1. 确定分散的数据要合并到哪个身份上

2.将需要累加的业务数据,累加到这个身份上,其他删除;将不要累加的业务数据,只保留这个身份的数据即可

所以,我们只需要修改老数据,而不需要中间变量,更不需要动态创建。

问题二,看下图


这段代码取了最后合并数据后的所有身份id,然而如下图

这里明明已经在遍历过程中保存过,为何还要再取一边.....

问题三,变量命名随意,阅读困难(再加上动态创建,orz.......),不去往上面翻代码,很难单独理解这一段代码,如图


明确问题后,我们开始优化,经过思考和确认,优化后的代码如图


读者可以品一下,两端代码的可读性与空间复杂度都得到了大幅提高

你可能感兴趣的:(记一次代码优化)