本篇是作者在工作中遇到的bug反思,分为原因分析、养成习惯、吸取经验三部分,以此避免再次犯错。同学们也可以看一看,是否也犯过一样的错误。
Bug原因分析
未考虑边界条件
逻辑边界条件处理:重置值,截取字符串长度
文本边界处理:空处理(null\undefined,使用??进行默认值处理),超出处理(省略或换行,注意连续数字、字母),宽度过长处理(设备兼容或字数限制)
未考虑初始化值
对象赋值为{}或null;字符串赋值为"";数值赋值为-1
未考虑字段校验,如是否必填,值为数字时有无上下限
未考虑内部代码性能,在自动化测试中易被检测出
未考虑外界极端条件,如弱网加载图片
未充分自测,尤其是修改全局代码
未充分理解业务
对某个东西了解不够充分,像微信小程序api并非都promise化,如wx.showModal
人无完人,细节稍有遗漏
养成习惯
- 提交前检查代码,是否遗漏、写错
- 对问题会考虑更多,如值变化是否需要监听,接口或回调的触发时机
吸取经验
关于分页
- 对数据做增删改后,需刷新回到列表的第一分页。一般列表都是按更新时间做排序,此时顺序发生了改变,而且如果是删除操作,分页可能不存在,要回到第一分页
- 重新查询分页时需携带当前查询条件
关于兼容性
- 安卓系统4.4.4以上内置浏览器基本与操作系统无关,看Chrome最近版本是否支持即可
- 苹果内置浏览器依赖系统版本,看对应版本
关于增强型校验(只要有一个组件内容错误,则无法提交,只有全对才可提交)
- 客户端做增强型校验,服务端需要校验吗?需要,因为3种交互方式(URL、超链接、表单)中的URL存在风险,需提高安全性,防止暴力访问
- 服务端做增强型校验,客户端需要校验吗?需要,提高用户体验,减少服务器压力
