问题产生现象:
用户进行抽奖,奖励领取次数上限与实际上限不符。
问题产生根源:
代码的错误复用:抽奖过程中对用户已获得的奖励列表进行处理,在更新数据库表的时候对该列表进行了重复处理,导致用户已领取该奖励次数入表数据比实际增多,间接影响了对该奖励上限的判断。
解决方案:
关闭活动,返还花费,并对关键道具进行处理,修改逻辑,将判断是否领取过的函数与处理列表的函数分离。
思考:
实习的第一次正式参与项目开发,其间有很多问题,包含但不仅含以下:
1.对项目结构不熟悉,对常用工具类无法做到灵活应用。
2.项目开发流程和规范不熟悉
a.有实际开发与需求评审不符的情况;
b.有实际开发与接口文档不符的情况。
3.对必要工具(IDE、redis、Linux)等必要工具不够熟悉,花费较多时间。
4.代码规范问题
a.单行for/if语句块的大括号;
b.字段拼写出现错误;
c.多分支结构时,未考虑以中断等形式增加出口来避免可读性降低;
d.多循环结构时,未考虑以中断等形式优化代码性能。
5.无意义的判空,以及对NPE的不敏感
a.Dao层返回null导致NPE;
b.i++形式的for循环导致NPE;
c.集合中查找不存在的对象导致NPE;
6.对逻辑的思考不透彻,未做到先捋清逻辑再编码,产生严重的逻辑错误,导致重写。
7.对自己的代码结构不够清晰,导致在代码重写或是修改的过程中造成新旧逻辑混乱杂糅,不利于代码的debug和维护。
8.对异常情况不敏感,出现漏判的情况。
9.对sql优化乃至sql语句不够了解
a.在Dao层盲目使用表连接处理逻辑等。
b.存在对数据表的无效操作。
10.对代码的性能优化不够熟练
a.循环io操作;
b.在主接口与被调函数中重复获取相同的表数据;
c.未做到先合并数据再更新表;
11.对数据不敏感,无法全面地想到可能出现问题的情况,导致bug的遗漏。