JavaScript 风格指南
命名
根据不同场景,会用到小驼峰式(lowerCamelCase)、大驼峰式(UpperCamelCase)和大蛇式(UPPER_SNAKE_CASE)。
在使用流式接口进行 API 设计时,可以不受方法命名规则限制。
细则
1、变量名/属性名、函数名/方法名、参数名使用小驼峰式。
2、构造函数名、类名使用大驼峰式。
3、常量名使用大蛇式。
4、使用英文单词命名,不可使用拼音、汉字等,不可使用「简写」。
5、即使是全大写的专有名词,也要严格遵从驼峰式命名规则。
6、用词需要简洁、达意。
7、非全局、通用场景时需要加上准确描述业务场景的词汇。
8、布尔型变量使用形容词、动词的现在分词和过去分词。
9、返回值是布尔型的函数/方法,使用「is-」或「has-」开头,后面可接名词、形容词及动词的现在分词和过去分词。表达「是/否」时前面用「is-」,表达「有/无」时前面用「has-」。
10、返回值是视图结构的函数/方法,使用「render-」开头的动宾结构。
11、返回值是其他类型的函数/方法,使用「get-」、「find-」等具有「获取/获得」语义的单词开头的动宾结构。
如果函数/方法内部的逻辑很简单,推荐使用「get-」,否则最好使用「find-」。
12、对事件进行处理的函数/方法,使用「handle-」或「on-」开头。
13、其他无返回值的函数/非生命周期方法,使用具有相关功能语义的动宾结构或动补结构。
14、生命周期方法使用动词的原型或过去分词。
范式
不限制使用一种编程范式,可以同时使用面向对象、函数式、响应式等,但要遵守相应编程范式的一些原则。
面向对象
1、在使用面向对象编程时,必须要基于类,不可直接基于原型。
函数式
1、参数不可变,不允许直接修改入参。
不允许对入参重新赋值。如果入参是个对象,同时不允许对其属性进行重新赋值。
2、返回值必须为一个新值。
响应式
格式
TBD
注释
TBD
其他
类型
开发时使用 TypeScript,因此要重视类型及类成员的访问控制。
1、变量/属性定义、函数/方法定义、函数/方法参数、函数/方法返回值都需要标明类型。
2、禁止使用 any
。
3、有 return
关键字的函数/方法被视为有返回值,如果直接 return;
,则返回值类型是 undefined
。
4、无返回值的函数/方法,即没有 return
关键字的,返回值类型为 void。
5、异步函数/方法的返回值为 Promise<T>
。
6、类成员必须标明访问控制符。
7、可被外部访问的类成员使用 public
访问控制符。
8、可被派生类访问的类成员使用 protected
访问控制符。
9、仅能被实例访问的类成员使用 private
访问控制符。
10、标为 readonly
的类属性只能被赋值一次,即初始化。
组件
1、与最终显示无直接关系的变量或常量,不作为组件的状态存在。
无构建
有的场景不能使用构建工具,例如:在后台管理系统的页面主要是由后端工程师开发的情况,使用前端构建工具会增加他们的开发成本,大多数情况是选择 jQuery 作为基础库,所以不能用 ES6+ 语法。
每个 JS 文件的代码应该这样组织: