• 如何降低应用软件的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等值转空字符串
  • 相关阅读:
    oracle用户被锁
    Docker入门
    物化视图
    MySQL报错:Packets larger than max_allowed_packet are not all
    ORA-01555 快照过旧
    mysql授予权限
    CentOS7.4安装部署KVM虚拟机
    前端面试题收藏
    CoffeeScript 学习笔记
    spring学习笔记(四)
  • 原文地址:https://www.cnblogs.com/jxjl/p/13723683.html
Copyright © 2020-2023  润新知