张宇航:微医前端技术部医保支撑组,一个不文艺的处女座程序员。

前言

没有无缘无故的爱,也没有无缘无故的恨,当然也没有无缘无故的 code review

为什么要 CR

给大家讲个故事,“大神 A”上班时突然恼羞成怒的骂道,这是谁写的代码,没有注释啥也没有,这么明显的 bug。当时整个小组都不敢说话,慌的要死,生怕说的就是自己。领导发话:“大神 A”查下提交记录,谁提交的谁请吃饭。过了两分钟,“大神 A”:这,这是我自己一年前提交的。所以不想自己尴尬,赶紧 code review 吧

一、角色职能

author 即需求开发者。要求:

  • 注重注释。对复杂业务写明相应注释,commit 写明具体提交背景,便于 reviewer 理解。

  • 端正心态接受他人 review。对 reviewer 给出的 comment,不要有抵触的情绪,对你觉得不合理的建议,可以委婉地进行拒绝,或者详细说明自己的看法以及原因。reviewer 持有的观点并不一定是合理的,所以 review 也是一个相互学习的过程。

  • 完成 comment 修改后及时反馈。commit 提交信息备注如"reivew: xxxx",保证复检效率。

reviewer 作为 cr 参与者,建议由项目责任人和项目参与者组成。要求:

  • 说明 comment 等级。reviewer 对相应代码段提出评价时,需要指明对应等级,如

    • fix: xxxxxxx  此处需强制修改,提供修改建议

    • advise: xxxxxxx 此处主观上建议修改,不强制,可提供修改建议

    • question: xxxxxx 此处存在疑虑,需要 author 作出解释

  • 友好 comment。评价注意措辞,可以说“我们可以如何去调整修改,可能会更合适。。。”,对于比较好的代码,也应该给与足够的赞美。

  • 享受 review。避免以挑毛病的心态 review,好的 reviewer 并不是以提的问题多来衡量的。跳出自己的编码风格,主动理解 author 的思路,也是一个很好的学习过程。

二、CR 流程

1、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 内容。

2、CR

  • 提测时发起 cr,需求任务关联 reviewer。提供合并请求,借助 gitlab/sourcetree/vscode gitlens 等工具。reviewer 结束后给与反馈

  • 针对 reviewer 提出的建议修改之后,commit message 注明类似'review fix'相关信息,便于 reviewer 复检。

  • 紧急需求,特事特办,跳过 cr 环节,事后 review。

三、CR 标准

  • 不纠结编码风格。编码风格交给 eslint/tslint/stylelint

  • 代码性能。大数据处理、重复渲染等

  • 代码注释。字段注释、文档注释等

  • 代码可读性。过多嵌套、低效冗余代码、功能独立、可读性变量方法命名等

  • 代码可扩展性。功能方法设计是否合理、模块拆分等

  • 控制 review 时间成本。reviewer 尽量由项目责任人组成,关注代码逻辑,无需逐字逐句理解。

四、最后

总的来说,cr 并不是一个找 bug 挑毛病的过程,更不会降低整体开发效率。其目的是为了保证项目的规范性,使得其他开发人员在项目扩展和维护时节省更多的时间和精力。当然 cr 环节需要团队每一个成员去推动,只有每一个人都认可且参与进来,才能发挥 cr 的最大价值。最后安利一波本人开发 vscode 小插件搭配 gitlab 分支 review,主要流程是点击按钮发起合并请求,自动生成 mr 链接,并发送至企业微信通知相关责任人开始 review。

code review流程规范相关推荐

  1. Google是如何做Code Review的?| CSDN原力计划

    作者 | 帅昕 xindoo 编辑 | 屠敏 出品 | CSDN 博客 我和几个小伙伴一起翻译了Google前一段时间放出来的Google's Engineering Practices docume ...

  2. Google 是如何做 Code Review 的?| 原力计划

    作者 | 帅昕 xindoo 责编 | 屠敏 出品 | CSDN 博客 我和几个小伙伴一起翻译了Google前一段时间放出来的Google's Engineering Practices docume ...

  3. Google是如何做Code Review的

    我和几个小伙伴一起翻译了Google前一段时间放出来的Google's Engineering Practices documentation,翻译后的github仓库https://github.c ...

  4. Code Review 在丁香医生前端团队的实践

    时间过得很快,转眼间 Code Review 机制在丁香医生前端团队已经运作一年多了.今年4月初时,将团队在 Code Review 方面的一些经验在丁香园前端团队进行了分享,各个业务线的前端同学们逐 ...

  5. 四剑客与Code Review的恩怨情仇:“始乱终弃”到“浪子回头”

    背景 Code Reivew 的主要目的是通过逐步改善团队所输出的代码以确保整体代码结构的健康整洁与可演进.知微产品前端团队在Code Reivew 的近两年探索中,总结出一套适合小型研发团队的Cod ...

  6. Code Review工具Jupiter介绍

    [IT168 技术文档] 引言 Code Review的作用和意义已在很多技术团队内达成共识,可是很多时候并未被有效执行,甚至被认为是一项费时费力的工作.借助一些工具可以更容易,更有效率地来进行Cod ...

  7. 听我的!美国科技公司这样做Code Review

    Code Review,在当代的软件开发中占有重要的一环.虽然国内各大主流公司都已经参照国外同行设立了比较严格的Code Review机制,但是还是有好多大型软件公司以及中小型软件公司还未推行这一重要 ...

  8. 腾讯 Code Review 规范出炉!

    来源:腾讯技术工程,作者:cheaterlin,腾讯 PCG 后台开发工程师 前言 作为公司代码委员会 golang 分会的理事,我 review 了很多代码,看了很多别人的 review 评论.发现 ...

  9. 腾讯 Code Review 规范出炉,你还敢乱写代码?

    前言 作为公司代码委员会 golang 分会的理事,我 review 了很多代码,看了很多别人的 review 评论.发现不少同学 code review 与写出好代码的水平有待提高.在这里,想分享一 ...

  10. 腾讯 Code Review 规范出炉!你还敢乱写代码??

    点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 源码精品专栏 原创 | Java 2020 超神之路,很肝~ 中文详细注释的开源项目 ...

最新文章

  1. 一起从头学习Flex
  2. Oracle 多行记录合并/连接/聚合字符串的几种方法
  3. vc2010中设置ipch与sdf的位置
  4. Java学习笔记_抽象/接口
  5. WAS集群系列(5):集群搭建:步骤3:安装IHS软件
  6. 需求蔓延,常见但不正常,教你如何破
  7. 人人都可以写的可视化Python小程序第二篇:旋转的烟花
  8. php的核心类 控制,phpMVC框架的核心启动类定义
  9. 大学四年只学java_大学四年废了怎么办,不如来学java
  10. 转 web 开发字体
  11. 资料分析-特殊增长率,综合分析
  12. 【第二章 | 进程的描述与控制】《操作系统 慕课版》课后答案 + 复习
  13. Evernote推出实体笔记本Evernote Business Notebook,支持搜索手写笔记,用实体便签将笔记同步到Evernote上的相应分类
  14. 大一想去参加培训的学生
  15. java游戏英雄时代攻略_军团战棋英雄时代战役攻略 战役全关卡通关攻略
  16. Flutter 利用 FFI,绕过 Android JNI 直接调用 C++ 层!
  17. 【PyTorch教程】P27、28、29 完整的模型套路
  18. JME3教程:Android创建一个简单的示例
  19. 基于Pytorch实现的声纹识别模型
  20. 云计算基础设施总体架构介绍

热门文章

  1. matlab横纵坐标程序,matlab横纵坐标标注
  2. 火车售票系统(设计模式分析)
  3. 易基因 - 外泌体let-7d-3p和miR-30d-5p作为宫颈癌及其癌前病变无创筛查的诊断标志物|早期筛查
  4. 深度学习目标检测---使用labelimg对自己的数据集进行标记(windows系统)
  5. post请求参数校验工具param-validate
  6. 一直被世人误解的薛定谔猫:批判量子力学及其残忍的隐喻
  7. 如何在一台手机上,同时登录两个微信号?
  8. 2022-2028年中国冷冻草莓加工行业市场竞争态势及发展趋向分析报告
  9. Semantic-UI某些图标不能显示+资源引入两种方式
  10. 读《天才在左,疯子在右》02--棋子