HE Code Review
什么是Code Review
code review,中文代码评审。code review的最大作用在于帮助团队找到代码缺陷。“代码审查一般可以找到及移除约65%的错误,最高可以到85%”。事实上,在内部code review的时候,Code Review会有更多的好处:
- 传播知识。在刚开始代码提交的过程中,不断pr,不断commit,最终才会被accepted。这个过程也是不断的review过程,通过同事&上级的指导,年轻的coder能学到更多的代码规范和很多好的实践。比如我在刚开始的时候,代码质量很差,git流程也有问题,在一次次的pr中逐步解决这些问题。 2. 增加代码质量。有经验的coder在架构设计、代码细节等方面会对新人有很好的帮助。Code Review也能帮助coder审视到自己的代码质量,以及实施最佳实践。
- 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
- 代码是否能运行?
- 项目状态是否描述?project status
- 代码是否容易理解?
- 代码是否根据编码标准/指南编写的?
- 代码是否与新技术同步?
- 部分代码是否重复多次?
- 代码是否容易调试?
- 函数|类|组件是否太长,函数或类是否有太多责任?
- 组件销毁是否删除了监听器?
- 文件名|变量是否符合团队整体规范?
- 是否从npm删除未使用的安装包?
- 代码应该遵循定义的体系结构。如代码分离,Web component。
CodeStyle
- 无写死数据(hardcoded),使用常量(const)。
❎if(code === 10){} ✅
const status=10; if(code === status){}。 - 避免过多if else。
- 删除注释代码。
- 删除不必要的注释。
- 添加必要注释。必要注释说明代码功能和原因。
ES6|7 ...
- 使用ES6。
- 使用箭头函数。避免
let that|self = this
。 - 使用默认值。
- 使用...
- 使用
const let
。 - 使用
import export
。 - 使用``字符串模板。
- 使用arrays | objects 解构赋值。
- 使用Promise | Asyns/Await。
Third-Party Libraries
- 使用lodash等functions,而不是自我实现。
- 尽量使用项目已引用UI库,而不是重新写组件。
ESLint
- 无任何lint警告和错误。
- 无
console.log()
。特殊场景特殊对待,比如知乎控制台招聘信息等。
CSS | CSS in JS
- 命名规范。符合团队命名规则。
- 是否使用了JS中的CSS库?
- 除非使用rgba(),否则使用十六进制颜色代码#000。
- 使用flexbox。
- 避免使用
!important
juejin.cn/post/684490… - 避免给 width, height, top, left等添加animate,使用transform。原因可以参考大漠的https://github.com/amfe/article/issues/47
- 项目统一使用相同单位。
- 避免使用内联样式。将内容与设计分开,维护更加简单。
Test
mocha官网](mochajs.org/)
关于js的单元测试可以参考js-unit-testing-guide
- 测试名称(description, it)是简洁、明确、描述性的。
- 测试是可读、可维护、可信任的。
- 避免测试中的逻辑。
- 避免在同一测试中测试多个问题。
- 测试用例健全,覆盖一般case和边缘case。
- 测试功能,而不是内部实现。内部实现可以放在Code Review中。
git
- 分支规范与commit规范
- 确保没有签入dist文件,编辑器/ IDE文件,node_modules等,git项目有一个.gitignore。
Others
- 代码安全性。
- 代码性能。
- 代码可维护性。
- 交互性。
总的来说:
团队的review
目的是学习
重点放在代码质量上
注意代码整洁、最佳实践和code smell
不应该讨论业务细节
更不应该有打分和评审机制,百害而无一利。团队里面不应该分个369等。