2020年4月

在早期网站中,JavaScript主要用于实现一些小型动效或表单验证。今天的Web应用则动辄成千上万行JavaScript代码,用于完成各种各样复杂的处理。这些变化要求开发者把可维护能力放到重要位置上。正如更传统意义上的软件工程师一样,JavaScript工程师受雇是要为公司创造价值的。现代前端工程师的使命,不仅仅是要保证产品如期上线,更重要的是要随着时间推移为公司不断积累知识资产。

编写可维护的代码十分重要,因为很多开发者都会花大量时间去维护别人写的代码。实际开发中,从第一行代码开始写起的情况是非常少见的。通常都是要在别人的代码之上来构建自己的工作。让自己的代码容易维护,可以保证其他开发者更好地完成自己的工作。

注意 可维护代码的概念并不止适用于JavaScript,其中很多概念适用于任何编程语言。当然,有部分概念可能确实是特定于JavaScript的。

1. 什么是可维护的代码

可维护的代码有几个特点。通常,说代码可维护就意味着它具备如下特点。

  • 容易理解。无需求助原始开发者,任何人一看代码就知道是干什么的,怎么实现的。
  • 符合常识。代码中的一切都显得自然而然,无论操作有多么复杂。
  • 容易适配。即使数据发生变化也不用完全重写。
  • 容易扩展。代码架构经过认真设计,支持未来扩展核心功能。
  • 容易调试。出问题时,代码可以给出明确的信息,通过它能直接定位问题。

能够写出可维护的JavaScript代码是一项重要的专业技能。这个技能是一个周末就拼凑一个网站的业务爱好者和对自己所做的一切都深思熟虑的专业开发者的重要区别。

2. 编码规范

编写可维护代码的第一步是认真考虑编码规范。编码规范在多数编程语言中都会涉及,简单上网一搜,就可以找到成千上万的相关文章。专业组织都会有为开发者建立的编码规范,旨在让人写出更容易维护的代码。优秀开源项目都有严格的编码规范,能够让社区的所有人容易理解代码的组织。

编码规范对JavaScript而言非常重要,因为这门语言实在太灵活了。与多数面向对象语言不同,JavaScript并不强迫开发者把任何东西都定义为对象。相反,JavaScript支持任何编程风格,包括传统的面向对象编程和声明式编程,以及函数式编程。简单看几个开源的JavaScript库,就会发现有很多方式可以创建对象、定义方法和管理环境。

接下来的几节会讨论制定编码规范的一些基础方面。这些主题都很重要,当然每个人的需求不同,实现方式也可以不同。

- 阅读剩余部分 -

一位伦敦的Python工程师Oliver Russell最近做了一个好玩的尝试,用33行代码“实现了”React。

他实现的“React”主要涉及如下抽象:

  • 我们传一个取得状态并返回虚拟DOM的函数
  • “React”在浏览器中将虚拟DOM渲染为真实DOM
  • 状态改变,“React”再次运行函数并返回新虚拟DOM
  • “React”高效更新真实DOM,以匹配新虚拟DOM

由此可见,这个实现的功能还十分有限。只涉及虚拟DOM生成、差异比较和真实DOM渲染。

全部实现代码如下图所示。

- 阅读剩余部分 -