前端实战——技术篇(二、协同工作): JS开发规范

111 阅读6分钟

一、命名

1、常量使用全大写加下划线: BASE_URL
2、变量和函数使用小驼峰命名, 变量前缀为名词, 函数为动词(can、has、is、get、set、handler...)
3、构造函数与类使用大驼峰命名
4、对象的私有属性与方法添加 _(下划线)前缀: myObj._getName()

二、注释

函数注释

注释名语法含义示例
@param参数名 {参数类型} 描述信息参数类型与描述
@return{返回类型} 描述信息函数的返回值与描述
@author作者名、邮箱、日期函数作者信息
@version版本号版本信息
@example示例代码函数使用用例
@update更新日期 更新内容函数更新时间以及更新内容

三、注意事项

1、遵循 ES6 编码规范
2、使用严格等 ===
3、拒绝使用 eval() 函数 
4、在简单判断时使用三元操作符, 复杂时慎用
5、单值判断超过两种情况一定使用 switch, 且提供默认逻辑
6、单个 if...else 判断场景超过三个且相关逻辑较多时对每个处理抽离成函数
7、禁止修改函数的参数, 如果需要修改则应深拷贝一份修改后通过 return 返回新值(参考下文无副作用)

声明式编程

举例过年了, 每个项目组都在准备年会节目, HR和项目负责人负责采购节目道具

  • 声明式编程: HR告诉负责人: “要开年会了, 你们每个人统计一下需要的道具, 我去买”, 每个项目组负责人只需要和组员讨论之后告诉HR需要什么道具, 然后等通知就可以了, 这个就是声明式编程的思想

  • 命令式编程: HR告诉负责人: “要开年会了, 你们每个项目组的预算是多少多少, 自己负责采购, 报销, 另外因为要运输道具所以要统计道具大小, 需要负责人上报道具的重量和体积”, 然后每个项目组负责人都要统计道具、采购物品、索要发票、报销发票、统计道具体积, 每个人都要忙一圈.

  • 声明式编程更加注重结果, 基于完善的 API/SDK, 告诉程序需要达到的状态, 开发者可以不关系其底层逻辑而实现功能的开发, Vue/React 都是声明式的 JavaScript 用户界面框架.

  • 区别: 声明式编程开发者只需要告诉程序“我需要什么”, 命令式编程则需要开发者明确告诉程序“你需要做什么”

优点:

1.简化了开发者工作
2.减少了重复的工作
3.留下了改进的空间
4.提供了全局的协调能力
5.无需在意底层的实现逻辑

无副作用

函数执行的过程并不影响外界的环境, 即函数并不会修改外部环境的状态. 纯函数就是典型的无副作用函数.

一般情况下我们通过以下方式保证无副作用:

1.函数只使用参数, 但不修改参数
2.函数不修改在函数之外的变量
3.函数的结果通过 return 返回

纯函数

在输入相同的情况下, 输出的结果一定相同, 即不受外界影响, 也不影响外界.

纯函数不仅无副作用, 同时它还具备 引用透明 特性.

引用透明

引用透明指两个相同的 函数/表达式 可以在程序任意位置互相替换而不影响结果.

引用透明是函数式编程的一个概念, 函数的结果只依赖参数, 这种特性成为 引用透明.

优点:

1.更利于测试与问题排查
2.更易于开发者推理程序

无状态和数据不可变

无状态

在 React 框架的组件类型中包含无状态组件, 即组件内部无任何变量记录数据, 所有的数据全部来源于外部, 函数的无状态与组件的无状态相似.

无状态组件的好处:

1.相同的输入总是产出相同的输出, 不容易产生难以定位的bug, 便于测试
2.可以使用函数式编程的写法, 提高代码的可读性
3.组件渲染就是执行函数, 不需要生成组件实例, 提高性能

数据不可变

数据不可变是函数式编程的一个概念, 函数式编程当中, 对于已经初始化的 “变量” 是不可以更改的, 每次更改都需要创建一个新的 “变量”, 新的数据进行有副作用的操作都不会影响之前的数据.

总结

无论是无副作用还是无状态等等, 这些概念传递出的意思就是我们需要尽可能地规避一些隐性的修改, 不给期测试与排查问题与后期维护埋坑, 我们只要记得不要修改参数, 不要修改函数外的变量, 保证函数无副作用即可.

四、开发原则

S.O.L.L.D 五大原则, 这里直接引用汤姆大叔的深入理解JavaScript系列

深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP

深入理解JavaScript系列(7):S.O.L.I.D五大原则之开闭原则OCP

深入理解JavaScript系列(8):S.O.L.I.D五大原则之里氏替换原则LSP

深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP

深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP

五、编码规范

关于JS开发编码规范有以下几个完整的描述, 感兴趣的同学可以深入了解.

Airbnb JavaScript Style Guide

号称是“最合理的编写 JavaScript 代码的方式”。

Airbnb 的这个代码规范可能是互联网最流行的 JavaScript 代码规范了,它在 Github 上足有 6 万 star,几乎覆盖了 JavaScript 的每一项特性。

Google JavaScript Style Guide

地址: google.github.io/styleguide/…

只有遵守了这里的规则,一个 JavaScript 源文件才能被称为“Google Style”。很霸气,我行我素,同时也被不少公司沿用。

Idiomatic JavaScript Style Guide

地址: github.com/rwaldron/id…

符合语言习惯的 JavaScript 代码规范。

不管有多少人参与,不管是否在同一个代码库,所有的 JavaScript 代码风格都必须像同一个人写的。

另一个很强势的同时也很流行的 JavaScript 编码规范。它的野心也很大,不止想规范 JavaScript,其它语言也都想管起来。

地球上所有的代码都像同一个人写的?想想让人觉得不寒而栗啊……

JavaScript Standard Style Guide

地址: github.com/standard/st…

一个功能强大的 JavaScript 代码规范,自带 linter 和自动代码纠正,无需配置,自动格式化代码。可以在编码早期就发现代码中的低级错误。这个代码规范被很多知名公司所采用,比如 NPM、GitHub、mongoDB 等。