前端规范化了解

108 阅读3分钟

一、 编码规范的意义:

1.在开发的初级阶段,往往就是"能用就行,快速上线",这样随意的开发就很容易导致下一个人读不懂代码的状态,也就不得不进行重构。

2.编码不规范会在开发的各个阶段造成阻碍:如在评审时因为目录结构混乱、没有注释等原因导致无法评估开发风险和周期;在开发阶段,由于代码混乱,很容易出现重复造轮子的情况,也会产生很多隐藏的bug;在测试阶段,由于无法确定改动的内容会带来多大的影响,会对测试同学带来负担,也会造成上线后的bug;这样,也就会对自身造成负面的影响。

3.在严格执行代码规范后,代码易读,bug减少,效率提升,我们也会有更多的时间和精力去完善功能,优化性能,而不是浪费时间读代码。

二、编码规范的主要范围:

按照流程梳理,可包含目录约定、编码规范、Git规范,文档与注释规范,接口设计规范,单元测试规范等。

三、通用的三种编码风格

standard js、google js、Airbnb js

四、编码规范具体来讲:

1、外部变量不与对象属性重名(风格约束型规则,eslint:no-label-var)

       // 以下为错误写法
       var score = 100
       function game() {
           score: while(true) {
               score -= 10
               if (score > 0) continue score
               break
           }
       }

2、使用getPrototypeOf 来代替__proto__(安全约束型规则,eslint: no-proto)

    const foo = obj.__proto__ // avoid
    const foo = Object.getPrototypeOf(obj) // ok

3、不要扩展原生对象(安全约束型规则,eslint: no-extend-native)

Object.prototype.age = 18 // avoid

4、始终使用=== 替代==(风格类约束,eslint: eqeqeq)

name === 'John' // ok
name == 'John' // ok

五、EsLint的介绍

目的: 代码检测

优点:灵活性,任何规则都可以切换;可拓展,插件丰富;拥有易于理解的输出;出色的支持ES6;支持自定义规则

缺点: 需要一些配置才能使用,速度相较更慢

运行过程:ESLint 基于 AST对代码进行分析,并具有优秀的可配置行。借助插件化的设计还可以定制和引入新的规则。

六、JSDoc 介绍

JSDoc 是一个根据代码注释信息,生成JavaScript 应用程序、库、模块等API文档的工具。

安装到全局:npm install -g jsdoc

jsdoc生成的是html文件,如果需要markdown,则需要安装另一个插件:npm install -g jsdoc-to-markdown

七、基于git的版本控制规范

1、 git-flow:

主分支master:用来版本发布

开发分支develop: 日常开发一般在开发分支进行;如果想要发布正式版本,merge到master

功能性分支feature: 开发完成后,将其并入dev分支

修复分支fixbug:当出现线上问题时,从主分支拉出,修复完成后,合并到dev和master

2、 git中commit message 规范

不必深入代码即可了解当前的提交;容易分类的提交信息;如果需要的话,对本次提交影响的范围进行说明。

3、git hook: 自动化部署

八、规范化应用常见的问题

  • 在技术层面:

    1、技术选型分散:团队内部技术选型不统一,react、vue、js、ts

    2、技术场景广泛: 对于大型团队,涉及的开发场景可能包含 Node.js、小程序、React Native等。

    3、接入、升级成本过高: 工程数量的增加和老项目的难以适配,会进一步增加工程接入成本升级成本和方案维护成本。

  • 在其他层面:

    1、团队内部分布差异过大

    2、难以保证规范执行落地

    3、执行效果难以分析统计

九、规范化应用常见问题的解决方案

  • 多场景统一的ESLint规则配置集

  • 自动化配置接入工具

  • 代码集成交付检查

  • 执行状况监测分析