前端 Code Review

7,063 阅读4分钟

HE Code Review

什么是Code Review

​ code review,中文代码评审。code review的最大作用在于帮助团队找到代码缺陷。“代码审查一般可以找到及移除约65%的错误,最高可以到85%”。事实上,在内部code review的时候,Code Review会有更多的好处:

  1. 传播知识。在刚开始代码提交的过程中,不断pr,不断commit,最终才会被accepted。这个过程也是不断的review过程,通过同事&上级的指导,年轻的coder能学到更多的代码规范和很多好的实践。比如我在刚开始的时候,代码质量很差,git流程也有问题,在一次次的pr中逐步解决这些问题。 2. 增加代码质量。有经验的coder在架构设计、代码细节等方面会对新人有很好的帮助。Code Review也能帮助coder审视到自己的代码质量,以及实施最佳实践。
  2. code smell,中文代码异味。Code Review最核心的目的就是code smell,前端代码一般很少经过单元测试&性能测试,经验丰富的同事能很快的发现code smell,从而杜绝潜在bug。这点也是thoughtworks一位朋友提醒我的。

🚫讨论

​ 咨询过一些人,发现Code Review的目的和讨论经常会出现偏差,导致整个review过程效率低下。Code Review应该讨论的是功能设计、架构设计,以及代码质量,而不应该做下面的事情:

  • 业务细节。业务细节会让整个review过程出现偏差。
  • 撕逼。Code Review是团队内部讨论代码和学习的过程,也是个人减负的时间。Code Review对事不对人,务必避免职责coder的行为。

HE Review CheckList

​ Review checklist能帮助coder如何扮演一位reviewer的角色,提前专注于代码的最佳实践和code smell。

审查清单

General

  1. 代码是否能运行?
  2. 项目状态是否描述?project status
  3. 代码是否容易理解?
  4. 代码是否根据编码标准/指南编写的?
  5. 代码是否与新技术同步?
  6. 部分代码是否重复多次?
  7. 代码是否容易调试?
  8. 函数|类|组件是否太长,函数或类是否有太多责任?
  9. 组件销毁是否删除了监听器?
  10. 文件名|变量是否符合团队整体规范?
  11. 是否从npm删除未使用的安装包?
  12. 代码应该遵循定义的体系结构。如代码分离,Web component。

CodeStyle

  1. 无写死数据(hardcoded),使用常量(const)。❎if(code === 10){} ✅const status=10; if(code === status){}。
  2. 避免过多if else。
  3. 删除注释代码。
  4. 删除不必要的注释。
  5. 添加必要注释。必要注释说明代码功能和原因。

ES6|7 ...

  1. 使用ES6。
  2. 使用箭头函数。避免let that|self = this
  3. 使用默认值。
  4. 使用...
  5. 使用 const let
  6. 使用import export
  7. 使用``字符串模板。
  8. 使用arrays | objects 解构赋值。
  9. 使用Promise | Asyns/Await。

Third-Party Libraries

  1. 使用lodash等functions,而不是自我实现。
  2. 尽量使用项目已引用UI库,而不是重新写组件。

ESLint

  1. 无任何lint警告和错误。
  2. console.log()。特殊场景特殊对待,比如知乎控制台招聘信息等。

CSS | CSS in JS

  1. 命名规范。符合团队命名规则。
  2. 是否使用了JS中的CSS库?
  3. 除非使用rgba(),否则使用十六进制颜色代码#000。
  4. 使用flexbox。
  5. 避免使用!importantjuejin.cn/post/684490…
  6. 避免给 width, height, top, left等添加animate,使用transform。原因可以参考大漠的https://github.com/amfe/article/issues/47
  7. 项目统一使用相同单位。
  8. 避免使用内联样式。将内容与设计分开,维护更加简单。

Test

mocha官网](mochajs.org/)

关于js的单元测试可以参考js-unit-testing-guide

  1. 测试名称(description, it)是简洁、明确、描述性的。
  2. 测试是可读、可维护、可信任的。
  3. 避免测试中的逻辑。
  4. 避免在同一测试中测试多个问题。
  5. 测试用例健全,覆盖一般case和边缘case。
  6. 测试功能,而不是内部实现。内部实现可以放在Code Review中。

git

  1. 分支规范与commit规范
  2. 确保没有签入dist文件,编辑器/ IDE文件,node_modules等,git项目有一个.gitignore。

Others

  1. 代码安全性。
  2. 代码性能。
  3. 代码可维护性。
  4. 交互性。

总的来说:

团队的review

目的是学习

重点放在代码质量上

注意代码整洁、最佳实践和code smell

不应该讨论业务细节

更不应该有打分和评审机制,百害而无一利。团队里面不应该分个369等。