Code Review 最佳实践

ref: Code review Best Practices

文章将了以下内容:

  • 3w:why、what、when 进行 code review
  • code review 之前的准备
  • 执行 code review
  • CRs 示例

1.为什么进行CR

  • 代码编写者会规范自己的代码,也会觉得复查别人的代码有一种自豪感;
  • 有益于分享知识
    • 项目中的其他人知道全部的功能
    • 写代码的人使用的算法或技术会被全员学习
    • 加强团队内沟通
  • 保证代码风格统一,减少bug
  • 简洁的代码不止易于复查,也能减少bug

2.复查什么

这个需要在时间和质量之间做选择。有的团队可能仅关注合并和主分支的功能,其他团队可能会对所有代码进行审查。

但是无论范围是什么,需要确定的是,所有人的代码都需要被复查。即使是毫无瑕疵的代码,在审查的过程中,其他人会学到很多编码的好习惯。

3.上线时再进行吗

一般来说复查是在自测、集成测试之后,需要把代码合到主分支之前进行。

4.复查之前的准备

  • 提交者声明代码范围、内容的多少
  • 完整的、自测通过之后的代码
  • 代码重构不应该影响原有功能,相反,增加功能时也不应该重构其他代码。
    • 重构的代码会不重视
    • 大量的重构会不好做遴选,刷新提交等 git 功能

5.提交声明(commit message)

  • 总结
  • 描述做了什么以及怎么做的

6.复查人

  • 1-2个熟悉项目的人,其中一个应该资深
  • 不应该引入其他问题,像代码风格之类的讨论

7.code review

  • 代码功能

    • 提交的代码实现了功能吗
    • 问问题
  • 实现
    • 你会如何实现
    • 可以抽象吗
    • 像对手一样去复查,但是态度要友好
    • 考虑已实现库,减少重复造轮子
    • 实现是否改动了依赖,为什么
  • 易读性
    • 你花多长时间读懂了?
    • 是否符合团队的编码风格
    • 是否有未完成的todo
  • 可维护性
    • 看测试代码
    • 是否向后兼容
    • 是否需要集成测试
    • 提交反馈:是否有逻辑问题?
    • 文档是否更新了
  • 安全性
    • 符合安全规范
  • 注释:简洁、友好

8.反馈

  • 要有反馈,即使是一句done
  • 如果有修改,需要再次review

9.复查示例

9.1 命名不一致

class MyClass {
  private int countTotalPageVisits; //R: name variables consistently
  private int uniqueUsersCount;
}

9.2 方法声明不一致

interface MyInterface {
  /** Returns {@link Optional#empty} if s cannot be extracted. */
  public Optional<String> extractString(String s);
  /** Returns null if {@code s} cannot be rewritten. */
  //R: should harmonize return values: use Optional<> here, too
  public String rewriteString(String s);
}

9.3 重复造轮子

//R: remove and replace by Guava's MapJoiner
String joinAndConcatenate(Map<String, String> map, String keyValueSeparator, String keySeparator);

9.4 bugs

//R: This performs numIterations+1 iterations, is that intentional?
//   If it is, consider changing the numIterations semantics?
for (int i = 0; i <= numIterations; ++i) {
  ...
}

9.5 架构考虑

otherService.call(); //R: I think we should avoid the dependency on OtherService. Can we discuss this in person?

原文地址:https://www.cnblogs.com/paxing/p/11296760.html

时间: 2024-10-09 15:36:45

Code Review 最佳实践的相关文章

Code Review最佳实践

Code Review最佳实践 原文链接 : Code Review Best Practices 原文作者 : Kevin London 译文出自 : 开发技术前线 www.devtf.cn 译者 : ayyb1988 校对者: chaossss 状态 : 完成 在Wiredrive上,我们做了很多的Code Review.在此之前我从来没有做过,这对于我来说是一个全新的体验,下面来总结一下在Code Review中做的事情以及说说Code Review的最好方式. 简单的说,Code Rev

转 Code Review最佳实践

本文转自 https://www.cnblogs.com/dotey/p/11216430.html 我一直认为Code Review(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题.包括像Google.微软这些公司,Code Review都是基本要求,代码合并之前必须要有人审查通过才行. 然而对于我观察到的大部分软件开发团队来说,认真做Code Review的很少,有的流于形式,有的可能根本就没有Code Review的环节,代码质量只依赖于事后的

转: Code Review 程序员的寄望与哀伤

转自: http://www.cnblogs.com/mindwind/p/5639008.html 一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测试中很难被发现.毕竟想要在测试环境完美的复制生产环境的所有情况也是不太可能的,导致出现了疏漏.对于这类情况,我们在想是否可以通过在线下做一些 Code Review(代码审查)假想线上的环境差异,通

不容错过,Code Review 的最佳实践方案来了

前言 我一直认为Code Review(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题.包括像Google.微软这些公司,Code Review都是基本要求,代码合并之前必须要有人审查通过才行. 然而对于我观察到的大部分软件开发团队来说,认真做Code Review的很少,有的流于形式,有的可能根本就没有Code Review的环节,代码质量只依赖于事后的测试.也有些团队想做好代码审查,但不知道怎么做比较好.网上关于如何做Code Review的文章

code Review实践分享 邮件

之前在coolshell上看到一篇关于codeReview的文章:  http://coolshell.cn/articles/11432.html. ?接着实际工作当中实践了一把,有些感触,便向团队发了一封分享邮件,具体如下: 你好: 最近尝试了一下简单的Code Review,说一下感受: 曝工资项目: 没有尝试Code Review,我和培强各自负责不同的模块.采取的态度是:我只管自己的代码,其他我不理会. 结果 1. 每次需要我交叉修改培强代码时候,由于能力有限,需要花很多时间,去熟悉逻

EF Code First:数据更新最佳实践

EF Code First:数据更新最佳实践 最近在整理EntityFramework数据更新的代码,颇有体会,觉得有分享的价值,于是记录下来,让需要的人少走些弯路也是好的.为方便起见,先创建一个控制台工程,使用using(var db = new DataContext)的形式来一步一步讲解EF数据更新的可能会遇到的问题及对应的解决方案.在获得最佳方案之后,再整合到本系列的代码中. 一.前言 最近在整理EntityFramework数据更新的代码,颇有体会,觉得有分享的价值,于是记录下来,让需

Python 最佳实践

前言 对我来说,以前每次面试是我审视自己,检验自己的一种方式.每次准备面试,以及被面试官问住的时候才会发现,其实我python我学的还不够好.工作中也是,可以从其他的同事那里获得成长.但是我今天说的是,我也在自己总结和思考最佳实践这件事. 我想很多人都会有意识的去读一些PEP(Python Enhancement Proposals).了解语言设计者当时的考虑,这些文案也是经过很长时间的讨论最后才实施的.既然想用好这门语言,必然需要理解设计之美.比如我听说gvanrossum使用emacs作为编

软件开发人员的最佳实践

最近在一个网站上看到一篇写关于软件开发人员应该有的几项实践,感觉写的非常的好.下面将列举下文章中提到的几个方面. 首先文章中提出,软件开发人员需要不断的练习,什么是练习,为什么要练习,练习意味着什么?文章中给出了很好的解读.练习是一种习惯,练习是一个过程,练习并不意味着记住,练习需要不断的实践,练习需要专心致志的付出.射击运动员需要不断的练习才能射中更多的分数,开车也需要不断的练习才能成为driver,写字需要不断的练习才能写出好的字,然后才有可能成为书法家. Shooting, Driving

Code Review Engine Learning

相关学习资料 https://www.owasp.org/index.php/Code_review https://www.owasp.org/images/8/8e/OWASP_Code_Review_Guide-V1_1.doc http://cwe.mitre.org/about/index.html 目录 1. INTRODUCTION: 代码审计介绍 2. PREPARATION: 代码审计需要的准备 3. SECURITY CODE REVIEW IN THE SDLC: 系统生命