
张宇航:微医前端技术部医保支撑组,一个不文艺的处女座程序员。前端
前言
没有平白无故的爱,也没有平白无故的恨,固然也没有平白无故的 code reviewgit
为何要 CR
给你们讲个故事,“大神 A”上班时忽然恼羞成怒的骂道,这是谁写的代码,没有注释啥也没有,这么明显的 bug。当时整个小组都不敢说话,慌的要死,生怕说的就是本身。领导发话:“大神 A”查下提交记录,谁提交的谁请吃饭。过了两分钟,“大神 A”:这,这是我本身一年前提交的。因此不想本身尴尬,赶忙 code review 吧程序员
1、角色职能
author 即需求开发者。要求:web
- 注重注释。对复杂业务写明相应注释,commit 写名具体提交背景,便于 reviewer 理解。
- 端正心态接受他人 review。对 reviewer 给出的 comment,不要有抵触的情绪,对你以为不合理的建议,能够委婉地进行拒绝,或者详细说明本身的见解以及缘由。reviewer 持有的观点并不必定是合理的,因此 review 也是一个相互学习的过程。
- 完成 comment 修改后及时反馈。commit 提交信息备注如"reivew: xxxx",保证复检效率。
reviewer 做为 cr 参与者,建议由项目责任人和项目参与者组成。要求:markdown
- 说明 comment 等级。reviewer 对相应代码段提出评价时,须要指明对应等级,如
- fix: xxxxxxx 此处需强制修改,提供修改建议
- advise: xxxxxxx 此处主观上建议修改,不强制,可提供修改建议
- question: xxxxxx 此处存在疑虑,须要 author 做出解释
- 友好 comment。评价注意措辞,能够说“咱们能够如何去调整修改,可能会更合适。。。”,对于比较好的代码,也应该给与足够的赞美。
- 享受 review。避免以挑毛病的心态 review,好的 reviewer 并非以提的问题多来衡量的。跳出本身的编码风格,主动理解 author 的思路,也是一个很好的学习过程。
2、CR 流程
一、self-review
- commit 以前要求 diff 一下,查看文件变动状况,可接着 gitk 完成。固然若是项目使用 pre-commit 关联 lint 校验,也能发现例如 debugger、console.log 之类语句。可是仍然提倡你们每次提交以前检查一下提交文件。
- 多人协做下的 commit。多人合做下的分支在合并请求时,须要关注是否带入不必的 commit。
- commit message。建议接入 husky、commitlint/cli 以及 commitlint/config-conventional 校验 commit message。commitlint/config-conventional 所提供的类型如
- feat: 新特性
- fix: 修改 bug
- chore: 优化,如项目结构,依赖安装更新等
- docs: 文档变动
- style: 样式相关修改
- refactor:项目重构
此目的为了进一步增长 commit message 信息量,帮助 reviewer 以及本身更有效的了解 commit 内容。工具
二、CR
- 提测时发起 cr,需求任务关联 reviewer。提供合并请求,借助 gitlab/sourcetree/vscode gitlens 等工具。reviewer 结束后给与反馈
- 针对 reviewer 提出的建议修改以后,commit message 注明相似'review fix'相关信息,便于 reviewer 复检。
- 紧急需求,特事特办,跳过 cr 环节,过后 review。
3、CR 标准
- 不纠结编码风格。编码风格交给 eslint/tslint/stylelint
- 代码性能。大数据处理、重复渲染等
- 代码注释。字段注释、文档注释等
- 代码可读性。过多嵌套、低效冗余代码、功能独立、可读性变量方法命名等
- 代码可扩展性。功能方法设计是否合理、模块拆分等
- 控制 review 时间成本。reviewer 尽可能由项目责任人组成,关注代码逻辑,无需逐字逐句理解。
4、最后
总的来讲,cr 并非一个找 bug 挑毛病的过程,更不会下降总体开发效率。其目的是为了保证项目的规范性,使得其余开发人员在项目扩展和维护时节省更多的时间和精力。固然 cr 环节须要团队每个成员去推进,只有每个人都承认且参与进来,才能发挥 cr 的最大价值。gitlab

最后安利一波本人开发vscode小插件搭配gitlab进行review。由于涉及内部代码,暂时不能对外开放,这里暂时提供思路,后续开放具体代码。性能

