代码性能指标

97 阅读2分钟

一、健壮性

1、参数需要做好默认值、做好检测,保证参数的安全性

如果可以参数设定默认值,未传该参数,直接使用默认值

function defParam(config) {
    var _default = {
        a: 1,
        b: 2
    }
    for (var item in config) {
        _default[item] = config[item] || _default[item]
    }
    return _default;
}

var d = defParam({b: 3, c: 4})
console.log(d) //{a: 1, b: 3, c: 4}

若必须要传的值,就需要判断他是否已经传入且类型是否正确,不正确需抛出错误。

function multiplyTwo(num) {
    if (typeof num != "number") {
        throw new Error('num must be a number')
    }
    return num * 2
}

console.log(multiplyTwo(1)) //2
console.log(multiplyTwo("1")) //Error: num must be a number

2、当错误是我们无法控制时(如链接第三方),需要将该易错代码放在 try{易错代码}catch(err){} 当中,这样即使有错误,也不会导致程序中断,页面完全无法显示。

try {
    throw new Error()
} catch (err) {
}

二、可读性

1、优化丑陋结构

  • if-else 分支过长 -> 策略模式、状态模式
  • 分支套分支(如 if 里面套 if )-> 直接多个条件用 && 判断
  • 地狱回调 -> promise、async

2、遵循命名规范

1.常量全大写

const PIE = 3.14

2.类名首字母大写 - 大驼峰

function ClassStudent() {

}

3.普通的变量和方法 - 小驼峰

function addAndMinus() {
    4.局部变量 - 下划线开头
    var _number = 1;
}

4.局部变量 - 下划线开头

function addAndMinus() {
    // 局部变量 - 下划线开头
    var _number = 1;
}

5.一定要遵循语义化

3、做好注释


三、可复用性

1、目的:

  • 重复代码不用写第二遍,节约时间
  • 减少代码的体积

2、做法:

  1. 桥接模式
  2. 亨元模式
  3. 函数式编程
  4. 低耦合,高内聚

四、可扩展性

1、目的

  • 新增需求,不用变动现有结构
  • 新增功能,最好只需要写新功能,不用改动原代码

2、做法

  1. 留出扩展接口
  2. 模块低耦合,高内聚
  3. 良好的模块组织
  4. 良好的扩展方案