Site Overlay

如何提高前端代码质量?

前言

随着公司业务扩展,业务复杂度不断提升,人员增加,团队的协同开发成本就越来越高。代码的复用性、可读性、可维护性、影响范围,越来越不可控,代码的复杂度成指数型上升,项目变得越来越难维护。

综上所述总结出如下几个问题:

  1. 查看别人代码的机会越来越多,成指数型上升。
  2. 编码(风格不统一),不规范的代码,看起来往往都是逻辑复杂,命名不清晰,影响阅读速度。
  3. 代码没有(API文档、注释),不了解内部逻辑时,出现使用传参错误的情况,只能靠猜。
  4. 修改代码没有(测试用例),修改完成后无法验证代码的可用性,测试成本高,复现场景复杂。
  5. 对于项目结构(数据流图)、需求不清晰(产品功能地图),不能明确自己功能模块的职责边界。
    • 哪些能力应该由框架提供?
    • 哪些能力应该由插件提供?
    • 哪些能力有复用性?
    • 哪些能力没有复用性?
    • 哪些组件可以复用?
  6. 组件的增加没有(统一组件/工具库目录),当两个开发人员,需要同一个组件承载数据时,因信息不透明,对同一个组件分别开发了两遍。
  7. 项目(工程结构复杂,分类不清晰),项目整体结构阅读起来也非常困难。

1. 编码风格

参考规范:Airbnb JavaScript Style Guide

校验工具:JSCS

1.1 在WebStorm中的配置JSCS校验

  • 1.1.1 使用npm安装JSCS:

  • 1.1.2 在项目的根目录创建配置文件:.jscsrc.jscsrc.json

  • 1.1.3 修改WebStorm 代码校验工具的 [配置文件]

1.2 在WebStorm格式化工具配置Airbnb格式

  • 1.2.1 打开配置界面

1.3 配置完成

WebStorm可以提示代码风格错误,使用格式化可以修复部分简易代码风格错误。

1.4 项目分段改造

  • 1.4.1 第一阶段 自行修改
    • 针对新增页面、模块,要求按照Airbnb校验规则编码,不强制要求
  • 1.4.2 第二阶段 强制修改
    • 将Airbnb的规则加入Webpack loader中,强制在编译时校验,如果校验不通过,将编译失败无法进行其他业务代码的开发。

2. API文档注释

文档生成工具:Documentation

2.1 优先处理

  • 优先 复杂业务逻辑 处理
  • 优先 复用性较高 的业务模块处理
  • 优先对 数据流 处理的函数
  • 优先组件对 外部 提供的API(Props Function)
  • 优先 使用方式复杂 的组件

2.2 代码注释TAG

  • 常用注释

  • 类注释

  • 方法/函数注释

  • 属性变量注释

  • @type 类型说明

3. 测试用例

校验工具:Jest

3.1 在WebStrom中配置Jest工具

  • 3.1.1 使用npm安装Jest:

  • 3.1.2 修改WebStrom 测试工具配置文件

  • 3.1.3 配置Jest支持ES6语法

  • 使用npm安装babel

  • 创建.babelrc 配置文件(Jest默认加载root/.babelrc文件)

3.2 用例编写规范

  • 3.2.1 需要用例覆盖的代码 Pure Function

    • 算法库
    • 组件库
    • 业务逻辑代码
    • 数据流处理
    • 中间件处理
  • 3.2.2 用例要求
    • 独立仓库维护的组件,要求必须有测试用例、文档
    • 每次修改代码时,要求测试用例验证通过
    • 新增逻辑,要对应增加新的测试用例

3.3 项目改造

  • 纯函数:所有的函数应针对API开发,编写纯函数,保证相同的参数,有相同的返回值。
  • 组件仓库独立维护:项目中有大量的组件,可以抽象出共性组件,要创建独立仓库维护。
  • 项目仓库独立维护:业务逻辑代码,要抽离于界面,编写纯函数处理。
  • Git Submodule:增加【Git Submodule】管理子模块

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据