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

前言

没有无缘无故的爱,也没有无缘无故的恨,当然也没有无缘无故的 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。

往期推荐

Vite 太快了,烦死了,是时候该小睡一会了。

如何实现比 setTimeout 快 80 倍的定时器?

万字长文!总结Vue 性能优化方式及原理

90 行代码的 webpack,你确定不学吗?

如果你觉得这篇内容对你挺有启发,我想邀请你帮我三个小忙:

  1. 点个「在看」,让更多的人也能看到这篇内容(喜欢不点在看,都是耍流氓 -_-)

  2. 欢迎加我微信「huab119」拉你进技术群,长期交流学习...

    关注公众号「前端劝退师」,持续为你推送精选好文,也可以加我为好友,随时聊骚。

点个在看支持我吧,转发就更好了

高质量前端:Code Review 很慢,你要忍一下。相关推荐

  1. 高质量前端快照方案:来自页面的「自拍」

    1. 背景 将网页保存为图片(以下简称为快照),是用户记录和分享页面信息的有效手段,在各种兴趣测试和营销推广等形式的活动页面中尤为常见. 快照环节通常处于页面交互流程的末端,汇总了用户最终的参与结果, ...

  2. 推荐几个高质量前端公众号

    技术日新月异,发展迅速,作为一个与时俱进的互联网人,需要不断地学习扩宽视野. 今天为大家推荐几个技术领域中出类拔萃的公众号,它们的每一篇推文都值得你点开! 1 前端之神 模拟面试 Vue面试 300w ...

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

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

  4. 什么是Code Review 代码审查

    Code Review 是一种通过复查代码提高代码质量的过程,在XP方法中占有极为重要的地位,也已经成为软件工程中一个不可缺少的环节. 本文通过对Code Review的一些概念和经验的探讨,就如何进 ...

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

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

  6. 从Code Review 谈如何做技术

    本文转载自 www.coolshell.cn (这篇文章缘由我的微博,我想多说一些,有些杂乱,想到哪写到哪) 这两天,在微博上表达了一下Code Review的重要性.因为翻看了阿里内部的Review ...

  7. [读后感]从Code Review 谈如何做技术

    还有9个电,争取把这篇发出去,里面有太同共鸣,只不过之前没能写出来, 一是文笔有限,总结不够明确,本文至少总结出了我想总结的6个观点,看来总结能力还是要提高: 二是不确认这是对的,所以不敢贸然写出来, ...

  8. Google是如何做Code Review的

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

  9. Google Code Review最新指南

    本文译自Google最新开放的code review指南:How to do a code review 原文地址:https://google.github.io/eng-practices/rev ...

  10. 写高质量的代码,永不言晚!

    作者 | Nitesh sharma 译者 | 弯月 责编 | 郭芮 出转载自 CSDN(ID:CSDNnews) 以下为译文: 在如今这个时代,每个人都在努力提升资源能力.在Web应用程序方面,我们 ...

最新文章

  1. linux添加到普通用户sudo才干
  2. 如何在Laravel 中对大文件进行加密?
  3. easyui datalist 动态绑定数据_一文看懂动态链接
  4. 跟我一起考PMP---项目时间管理
  5. QT的QMutableListIterator类的使用
  6. 华为Mate40系列或10月15日发布:麒麟9000+66W双向快充
  7. 批处理定时执行任务_如何让你的西门子Wincc V14,每天定时自动执行某任务
  8. 【Python】keras使用Lenet5识别mnist
  9. wikioi 1430 素数判定
  10. 回调函数c++类中实现
  11. django 定制管理页面外观 模板文件不生效的解决方法
  12. 【图像去噪】基于matlab鲁棒PCA图像去噪【含Matlab源码 463期】
  13. 关于rocketmq的配置启动
  14. 随机梯度下降SGD算法原理和实现
  15. 基于51单片机的指纹考勤系统密码锁门禁原理图PCB程序设计
  16. dataframe动态命名(读取不同文件并规律命名)
  17. 新浪微博共享登录后无法退出切换账号问题解决
  18. 使用useSelector、useDispatch替代connect
  19. Photoshop---PS2017软件安装与破解
  20. web网页设计—— 中国餐饮协会(HTML+CSS)

热门文章

  1. 五、信息安全术语中英文词条对照表
  2. 利用脚本一键删除微博
  3. 当耐克用上了AI、AR技术,你的鞋也要放飞自我了?Just Do It !
  4. 获取当前北京时间API
  5. 如何做html链接,怎么做超链接,制作超链接的详细操作步骤
  6. 如何读一篇论文,笔记
  7. 从原理上搞懂编码——究竟什么是编码?什么是解码?什么是字节流?
  8. 软件专业面试心理测试题,面试心理测试题目,据说很准
  9. linux wakeup,linux内核3.4基于wakeup
  10. Hash算法进行签名验签