JavaScript 风格指南(笔记)
变量
- 使用有意义、可读性好的变量名
- 使用 const 定义长俩个
- 对功能类似的变量名采用统一的命名风格
- 使用易于检索名称(特别是数字)
- 传递参数时,使用说明变量
- 不要绕太多的弯子,显式优于隐式
- 当类/对象名已有意义时,对其变量命名不需要再次重复
- 避免无意义的条件判断
函数
- 函数参数不超过 2 个
- 函数功能的单一性
- 函数命名明确功能
- 函数只做一层抽象
- 移出重复的代码
- 采用默认参数精简代码
- 使用 Object.assign 设置默认对象
- 不要使用标记(Flag) 作为函数参数
- 避免副作用,即避免「接受一个值并返回一个结果」
- 不要写全局函数
- 采用函数式编程
- 封装判断条件
- 避免「否定情况」的判断
- 避免条件判断,使用多态
- 避免类型判断
- 避免过度优化,现代浏览器运行时会对代码自动优化
- 删除无效代码
对象和数据结构
- 使用 getters 和 setters
- 让对象拥有私有成员,可以通过闭包完成
类
- 单一职责原则(SRP)
- 开/闭原则(OCP),易于扩展,难于修改
- 利斯科夫替代原则(LSP),子类对象应该能够替换其超类对象被使用
- 接口隔离原则(ISP),不依赖不需要的接口,一个类对另一个类的依赖应该建立在最小的接口上
- 依赖反转原则(DIP)
- 使用 ES6 的 classes 而不是 ES5 的 Function
- 使用方法链
- 优先使用组合模式而非继承
测试
- 单一的测试每个概念
并发
- 用 Promises 替代回调
- Async/Await 是较 Promises 更好的选择
错误处理
- 捕获错误
- 不要忽略被拒绝的 promises
格式化
- 大小写一致
- 调用函数的函数和被调函数应放在较近的位置
注释
- 只对存在一定业务逻辑复制性的代码进行注释
- 不要在代码库中遗留被注释掉的代码
- 不需要版本更新类型注释
- 避免位置标记
- 避免在源文件中写入法律评论