1、什么是CodeReview?

Code Review(CR)即代码评审,又名代码走查,是一种通过复查代码来提高代码质量的过程,一般体现在一个团队的开发过程中。CR要求团队成员有意识地、系统地检查彼此的代码,从而验证需求、发现错误,同时指出其中不合规范的“低质量”代码,从而提高整个团队的代码质量。

一次 CR 可以是一次 Commit,也可以是一次 Merge Request。因此,实践课系统支持团队内部的 MR 评审以及 Commit 评审,供大家学习和交流。

2、为什么要CodeReview?

(1)旁观者清。

  • 对于同一段业务代码,由于看待问题的角度不同,评审者可能会比开发者更容易发现其中的问题,或是找到更有效的解决方案,共同维护团队的代码质量。
  • 提高代码质量和可维护性, 可读性等。
  • 查漏补缺, 发现一些潜在的问题点等。
  • 最佳实践, 能够更好更快的完成任务的方法。
  • 知识分享, Review他人代码时, 其实也是一个学习的过程, 自己也会反思&总结。

(2)快速了解业务。

  • 理想状态下,团队中的每个人都需要对整个项目的各个部分都很熟悉,当然,在项目很大时这是不现实的。通过代码审查至少可以让每个人了解更多的业务模块,同时也能达到人员互备的目的。
  • 人员互备:通过 CR,评审者也相当于参与了这次开发,相当于一种人力“备份”,当你休假或正在忙别的需求的时候,这时“备份”或许就能帮上你的忙了。

(3)开发者能够获得什么?

  • 对需求的理解得到加深。
  • 表达能力得到加强。
  • 逻辑能力得到训练。
  • 心理承受能力得到提高。

(4)评审者能够获得什么?

  • 快速上手业务需求和全局的架构。
  • 统一大家约定俗成的代码风格。
  • 优秀的设计思路和业务逻辑。

3、CodeReview 的原则。

(1)CR 是必要的,但也需要结合团队现状。

  • 当你的团队开发任务极其紧张,再耗费一部分人力去进行 CR,是不明智的。

(2)所有的代码都应被赞成。

  • 因为团队代码库的每一次改动(Change List ,以下简称 CL),都必定会提高当前系统的整体质量,即使这个 CL 并不完美。

(3)CR 不应该追求完美,而应追求持续改进。

  • 要知道,没有完美的代码,只有更好的代码,“慢即是快”。

(4)CR 不是挑刺,更不是证明谁的能力更强。

  • CR 是为了提高整个团队的能力,而不是针对个体设置的检查“关卡”,仅具有指导意义。

(5)评审者也需要对这个 CL 负责。

  • CR 不应设置奖惩机制,即便是有,也是对评审者和开发者同时的奖励或处罚。

(6)时刻保持谦虚。

  • 无论是评审者还是开发者,都可以在 CR 中提升自己的能力。

(7)合理解决问题

  • 解决冲突难以达成共识时,需要面对面或者拉起更大的团队讨论,带上leader。

4、在一次CodeReview中我需要关注什么?

(1)git 提交规范

(2)代码风格

a. 可读性

  • 衡量可读性, 有很好的实践标准, 即 Code Review 时能否非常容易的理解代码逻辑, 如果不能, 那意味着代码的可读性要进行改进。

b. 命名

  • 描述是否准确。不建议使用生僻单词。
  • 命名格式是否与团队风格一致。

c. 函数体长度/类长度

  • 函数体太长,不利于阅读。一般建议不超过50行。
  • 类太长,有可能违背“单一职责原则”。

d. 参数个数

  • 参数不要太多。一般不超过5个;5个以上建议使用对象。

e. 注释

  • 恰到好处的注释,能够帮助评审者更好地理解函数体和类。

(3)架构/设计

a. 单一职责原则

  • 一个类只做一类相关的事情。
  • 一个方法,最好只做一件事情。

b. 行为是否统一

  • 校验处理是否统一。
  • 数据处理是否统一。
  • 错误处理是否统一。

c. 代码是否污染

  • 代码是否对其他模块有强耦合。

d. 是否有重复代码

  • 检查是否将可复用的方法或组件抽取出来。

e. 开放-封闭原则

  • 代码是否具有良好的可扩展性。

f. 代码健壮性

  • 核心数据有没有强制校验。
  • 边界值有没有考虑得当。
  • 有没有潜在的bug。
  • 有没有内存泄露。
  • 有没有循环依赖。

g. 是否考虑了错误处理

  • 有没有很好的 Error Handling。

h. 面向接口编程

  • 检查业务的实现中有没有进行合适的抽象。

i. 效率/性能

  • 对用户使用频率高、资源消耗大的业务部分是否处理得当。
  • 关键算法的时间复杂度。
  • 有没有潜在的性能瓶颈。

j. 代码重构

  • 新的改动是打补丁,让代码质量继续恶化,还是对代码质量提升有帮助。

k. 时间粒度。

  • 一个Review单元的时间应控制在10~20分钟,如果超出这个时间,那么这段代码本身可能在业务划分或代码实现上,是存在问题的。

什么是代码评审(Code Review)相关推荐

  1. 代码评审(Code Review)

    代码评审的目的 不是为了去刻意批斗某个Coder,而是为了团队成员之间相互了解学习,加深成员对系统的理解,使团队成员的代码更加健壮,提早发现代码缺陷. 那么应该如何做代码评审呢? 流程说明: 1.代码 ...

  2. 作为CTO,我为什么必须要求代码进行Code Review!

    来源:宝玉 链接:https://cnblogs.com/dotey/p/11216430.html 我一直认为Code Review(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量, ...

  3. 老板:请将你的代码进行Code Review!

    点击上方的终端研发部,右上角选择"设为星标" 每日早9点半,技术文章准时送上 公众号后台回复"学习",获取作者独家秘制精品资料 往期文章 平常,BAT的大佬们都 ...

  4. 工程能力(4)代码检查code Review

    代码检查规则: 源文件规范 文件名 :java源文件名必须与包含的顶层类名一致 文件编码:utf-8格式 特殊字符:换行 缩进  空格 源文件组织规范 许可证或版权声明: package语句:单独占一 ...

  5. Eclipse Code Review(代码审查)工具介绍

    http://soartju.iteye.com/blog/564690 最近组内一直在做代码改进,既然是代码级别的改进,我想比较直接有效的办法就是Code Review. 虽然以前开发部也做过代码评 ...

  6. 研发效能工程实践-代码评审

    什么是代码评审 Code Review的定义:是一项单人或者多人通过阅读别人的源代码来检查代码质量的软件质量保证活动 定义有点绕口,其实就是写完代码之后让经验相对丰富一点的同事帮你检查一下你的代码,当 ...

  7. 团队管理中的代码评审

    代码评审在软件项目管理中是经常组织的活动,通过代码评审的工作也确实给我们的团队带来很多的益处,简单谈谈代码评审的感受,你们的团队是否也在进行代码评审(Code Review)的相关工作呢? 1.为什么 ...

  8. 如何进行代码评审(Code Review)

    什么是CodeReview Code Review(CR)即代码评审,是一种通过复查代码来提高代码质量的过程,一般体现在一个团队的开发过程中.CR要求团队成员有意识地.系统地检查彼此的代码,从而验证需 ...

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

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

  10. 如何做好Code Review

    时光匆匆流逝~ 今天是工程能力学习的最后一篇笔记了! 首先给坚持努力的自己呱唧呱唧! 然后搬好前排小板凳 学习啦! 本节课为<如何做好Code Review>,内容包括:为什么要做好Cod ...

最新文章

  1. Keras vs tf.keras: 在TensorFlow 2.0中有什么区别?
  2. 革命性提升-宇宙最强的NLP预训练BERT模型(附官方代码)
  3. 重新标注 ImageNet:多标签,全面提升模型性能
  4. 小程序授权第三方管理开发的流程
  5. (133)FPGA面试题-Xilinx FPGA Block RAM的三种写模式是什么?
  6. 电脑电子版文件怎么弄_清空回收站后,如何找回删除的文件?
  7. K610D i7 D2 HM86 HD4600 安装 Mac OS 10.15.2 提供工具和EFI
  8. 3Dmax移动,旋转,缩放图标不显示
  9. Linux驱动之设备树(设备树下的LED驱动实验)
  10. VIN码识别又叫车架号识别,OCR技术深度应用
  11. 【真.干货】一篇文章了解关于计算机硬件那些事
  12. 2021-07-15 声音一些基本概念
  13. 必应搜索引擎关键词网站采集URL域名工具国际版英文网址
  14. Android SystemUI之NavigationBar,导航栏(四)
  15. Windows 10 文件夹越来越大,如何瘦身,删除哪些文件?
  16. 计算机毕业设计之SSM的医院挂号就诊系统
  17. 韩媒看中国量子计算机,韩媒:量子计算机原本是欧美在玩中国却令人吃惊
  18. Lumiprobe 脱氧核糖核酸丨磷酸盐 CPG 1000 固体载体
  19. MongoDB-SQL语法
  20. 在Windows下和Linux下如何查看网卡MAC地址、以及修改MAC地址

热门文章

  1. 代码格式化工具 Clang-format
  2. xshell xftp免费版
  3. vivo手机通用的官方售后解锁工具包箱_可更换镜头拍照手机不远了!vivo IFEA分离式镜头获奖...
  4. vivo21a点击android版本,VIVO X21A原厂线刷救砖包_内附工具可救砖
  5. Windows下安装Tp6.0框架,图文。Thinkphp6.0安装教程
  6. 中国纺织行业前景动态分析与投资战略研究报告2022-2028年
  7. Soft Actor Critic算法论文公式详解
  8. 按键精灵定位坐标循环_[按键精灵教程]带你了解多点找色、多点比色
  9. xshell怎么连接linux服务器,教你怎么使用xshell远程连接linux服务器
  10. UbuntuSkills