如何降低应用软件的bug
1. 深层对象的读取,后端返回一个null导致前端报错
//开发场景,有时后端接口返回的字段的数据为null,导致前端有时不能读取深度值 let obj= {a:null} const { b } = obj.a // 对一个不存在的字段值继续取字段,导致报错
- 解决方案:
// 解决方案1, 增加default值 const { b } = obj.a || {} //解决方案2: function safeGet(run, defaultValue) { try { return run() } catch(e){ return defaultValue } } const { b } = saveGet(() => obj.a, {})
2. 连续点击导致多次触发事件。
// 增加防治措施,还要注意保证请求失败也要将接口放开,保证可以请求 // 解决方案 检测变量值是否是false, false则直接返回 调用开始--->设一个变量值为false,接口返回则将变量重置为true。如果中途报错了或者参数不对也应该置位true
3. 保存事件的参数,依赖其他接口返回数据。(弱网条件下,没拿到数据直接保存导致数据缺失报错。网络正常无问题)
// 如果这个接口返回的数据会影响到后续的执行, 那么这个接口调用必须加上loading
4. url跳转传递的参数全是字符串, 其中(true, false, undefined, null)这些值都会变成字符串。不注意就很容易出bug
// 解析的时候需要对此注意一下
5.解构赋值如果这个字段不存在就会解构出undefined,如果将这个值作为请求参数的值会导致报错。如果没值应该传空字符串
// 对封装的请求函数, 将传入的参数进行处理将undefined和null等值转空字符串