目录
- 优先使用 TypeScript 编写代码
- 优先使用最新的 ECMAScript 语法和特性,并使用 Babel 编译为兼容的代码
- 使用有意义的英文单词
- 尽量避免使用数字、空格、连字符(如
-
、_
)、缩写、无法阅读和识别的组合(如danJia
)、非英文字符(如🎶
、价格
)等 - 变量和字段名称使用 'camelCase' 方式命名
- 模块和类名称使用 'CamelCase' 方式命名
- 使用 JSDoc 语法编写注释内容
- 编写尽量详细的注释
- 每行的首尾均不能是空格(以空格缩进的行首除外)
- 关键词、运算符与变量、常量和字面量之间保留一个空格
- 数组和对象
- 尽量将数组和对象拆分为多行书写
- 每行一个成员或属性,以
,
结尾,并根据层级向内缩进对应的数量 - 每个
[
和{
与之前的内容保持在同一行,在其后换行 - 每个
]
和}
在其前换行,并于之后的内容保持在同一行
- 函数
- 声明时,
function funcName() {}
函数名称与()
之间没有空格 - 匿名函数不论是否有参数,都需要保留
()
- 函数参数较多时,可以分为多行编写
- 声明时,
- 三目运算符使用换行和缩进区分两个分支
- 连续调用和有多个判断条件时,可以使用缩进区分不同的操作对象和数据比较
- 始终使用
let
声明变量,避免使用任何var
- 始终在声明变量时指定初始值
- 仅能将变量赋值为同一类型的数据
- 始终使用
const
声明常量 - 每条语句仅能声明一个变量或常量
- 仅在需要的作用域中声明和使用变量和常量
- 尽量避免设置和使用全局变量或常量
- 始终在作用域的顶部完成变量和常量的声明和初始化
- 禁止在同一作用域内重复声明同名的变量或常量
- 仅能计算和比较相同类型的数据
- 多个数据的运算可以使用括号明确优先级
- 禁止使用
==
比较数据是否相等 - 比较语句应当是幂等的,禁止任何有副作用的操作
- 始终选择 ESM 方案
- 优先导出和使用默认模块
- 始终编写错误处理逻辑
- 对错误可以选择忽略、重试、备用方案,或者打印日志、提交给统计接口
- 无法处理的错误可以继续抛出,交给其他相关逻辑处理
- 应当使用 ESLint 进行代码格式检查
- 选择合适且完善的 ESLint 规则
- 尽量避免大规模的自动格式化