一、命名
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
符合语言习惯的 JavaScript 代码规范。
不管有多少人参与,不管是否在同一个代码库,所有的 JavaScript 代码风格都必须像同一个人写的。
另一个很强势的同时也很流行的 JavaScript 编码规范。它的野心也很大,不止想规范 JavaScript,其它语言也都想管起来。
地球上所有的代码都像同一个人写的?想想让人觉得不寒而栗啊……
JavaScript Standard Style Guide
一个功能强大的 JavaScript 代码规范,自带 linter 和自动代码纠正,无需配置,自动格式化代码。可以在编码早期就发现代码中的低级错误。这个代码规范被很多知名公司所采用,比如 NPM、GitHub、mongoDB 等。