※敲规范

示例:页面布局要求返回数组对象,而实际情况没有按要求返回导致非自定义异常(即程序异常)抛出。

  • 格式要求:
    data:{ detail: [] }

  • 返回情况:
    1 data:{};
    2 data: { detail: null }
    3 data: { detail: {} }
    4 data: { detail: ’’ }

  • 报错内容:
    1 data.detail会找不到detail属性
    2 data.detail.length找不到length属性,即detail不是数组

  • 习惯
    1 返回数据为空,无法确定返回data是空对象,还是null,或者其他。如果不做校验则往下无法正常执行。
    2 取值会直接取所需要的一级,如data.detail,一旦data中不包含detail对象,则往下无法正常执行。
    3 在数据格式为数组的情况下,通常都会用到数组的长度属性,即array.length,如果没有检验数组,一旦格式不匹配,length则会抛出异常。

  • 解决方法:
    1 判断data是否存在detail属性:if(data.detail)
    2 判断data.detail是否为数组:utils.isArray(data.detail)
    3 加强检验,除了完全通过检验的步骤往下执行,其他的全部走容错机制。

utils:

isArray(array) {
   return Object.prototype.toString.call(array) === '[object Array]' ? true : false;
}

即使已经协商好交互结构,但在开发中还是要做好容错机制,不要太过于依赖协商的定义,从而导致不必要的问题影响用户体验。

代码规范造,问题错误少。

原文地址:https://www.cnblogs.com/min77/p/15433183.html