如何引出bug

Aug 5, 2014


这两天都在折腾游戏的助战模块,起因是因为一起错误修改正确了之后反而引出了不好的效果,策划因此坚决要求改掉,修改的方面就是积分计算和根据权值随机助战者。

于是就踏入了几天的不归路,由于是上周四晚上连夜赶工修改(策划的态度不容妥协)的,所以不是很理想,这两天一直都在优化。今天又发现了一个bug,就是通过权值构建一个随机区间出了问题,而且还出现了助战者重复的问题。

经过代码上的分析,就是在区间内随机出现问题,我随机了40次保证一定会随机到,但是问题我是用的math.random(min, max);来保证随机的,每随机了一个就把这个区间删掉,我预料到了有可能下一次会随机到已经删除的区间,所以用随机40此来保证,但是没有想到math.random(min, max);在频繁随机的情况下返回的值会在某一个区间内摆动,这样也就导致了问题。到最后我觉得代码简直就是坨翔。构建随机区间的代码是一坨翔,随机模式是一坨翔,看到最后,我觉得这段代码一定要删掉,因为再发展下去我觉得自己都hold不住这个代码。

在yuzhi同学的帮忙下,果断改了随机算法,根据权值取,瞬间代码各种干净,简单明了,顿时跺脚当初在做的时候为什么选用那么复杂的算法而导致bug。

总之,too yong too simple。简单明了达到目的的代码远比那些复杂的代码粗暴得多,对于后期也很方便维护,当然,能写出简单明了的代码也不容易,还是需要不断的积累。

今日教训:代码不要追求复杂,更应该追求的是以最简单明了不出错的方式实现需求。