Code Review 是什么?

Code Review即代码审查,程序猿相互审核对方的代码。

Code Review能获得什么好处?

  • 提高代码可维护性

    • 你写的代码不再只有编译器看了,你得写出审核人能看得下去的代码,
      并且还得考虑这段代码还有没有改进或者重构的可能
  • 提高代码质量
    • 不再有明显的逻辑错误,单元测试用例是否考虑边界值等情况,从而减少BUG的产生
  • 团队知识共享
    • 新的技术或者新的思路能够快速的在团队内传递
  • 提高项目预估准确性
    • 通过代码审核,让产品经理或者Scrum Master能更好的了解任务,更准确的估算工时
  • 业务或功能不再只依赖个人
    • 没有人喜欢修改别人的代码,尤其是生产环境中的核心业务代码。代码审查可以让至少另一个人对这段代码如数家珍
  • 指导新工程师
    • 代码审查有助于促进新成员更快的加入团队,快速掌握业务和技术知识

提交Code Review之前要做什么?

  • 准备或者提交相关需求文档以备审查者询问
  • 编写符合规范的代码和合适的注释
  • 考虑代码是否有重构的可能
  • 单元测试全部通过,测试覆盖率达标

如何Code Review?

  • 了解需求:这个提交是为了解决什么问题,是需求单、BUG修复、还是代码重构,
    如果不明确,需要及时和代码作者沟通和讨论
  • 检查代码业务逻辑是否符合需求
  • 代码是否符合相关代码规范
  • 确认是否有更好的方式方法重构代码
  • 检查单元测试用例是否考虑全面
  • 如果代码没有问题,也写上类似GOOD JOB之类的评论

Code Review之后可以做什么?

  • 对于代码审查人表示感谢
  • 如果代码审查没有通过,不要往心里去,审查的是代码,不是你
  • 尝试对每一个评论做出回复
  • 等待合并分支,等待持续集成告诉你全部通过

参考链接

Code Review 五问五答的更多相关文章

  1. C#学习基础概念二十五问

    C#学习基础概念二十五问 1.静态变量和非静态变量的区别?2.const 和 static readonly 区别?3.extern 是什么意思?4.abstract 是什么意思?5.internal ...

  2. 找到bug的根源,问五次为什么

    在学习<问题分析与解决>时学到了一种找到问题根源的方法——问五次为什么.具体内容是:当遇到一个问题,不要只看当前答案,要继续往下问,为什么,连问五次,就能够找到更深层次的问题.最近在复盘b ...

  3. var=value?export前后差在哪?-- Shell十三问<第五问>

    var=value?export前后差在哪?-- Shell十三问<第五问> 这次让我们暂时丢开 command line ,先来了解一下 bash 变量(variable)吧.所谓的 变 ...

  4. 在 GitHub 上玩转开源项目的 Code Review

    一.幕后故事 时光荏苒,岁月如梭-- (太文绉绉了,这不是我的风格) 今天我准备聊聊在 GitHub 上如何玩 Code Review. 突发奇想?心血来潮?不是. 咋回事呢?(对八卦不感兴趣的可以直 ...

  5. OpenGL快问快答

    OpenGL快问快答 本文内容主要来自对(http://www.opengl.org/wiki/FAQ)的翻译,随机加入了本人的观点.与原文相比,章节未必完整,含义未必雷同,顺序未必一致.仅供参考. ...

  6. 如何搭建开源code review gerrit服务器

    搭建环境:Ubuntu 14.04 一.环境准备 1.Java环境 gerrit依赖,用于安装gerrit环境. 下载:jdk-7u79-linux-x64.tar.gz http://www.ora ...

  7. code review作业

    下面是对结对编程队友12061166 宋天舒的code review 五个优点: 1.代码的风格优秀,注释不多,但是必要的注释还是有的,比如: // 三种模式 // mode1仅统计单个单词 // m ...

  8. <转>如何进行code review

    转自: http://pm.readthedocs.org/zh_CN/latest/codereview/howto.html 如何进行code review? code reivew是保障代码质量 ...

  9. Android 动画 6问6答

    1.view 动画有哪些需要注意的? 答:view动画 本身比较简单.http://www.cnblogs.com/punkisnotdead/p/5179115.html 看这篇文章的第五问就可以了 ...

随机推荐

  1. 根据上一行填充本行的空白栏位,SQL处理方式

    我在4年多前,写了一篇Excel处理空白Cell的文章,http://www.cnblogs.com/studyzy/archive/2010/04/07/1706203.html,其实在数据库中也会 ...

  2. Windows 保存BMP图片

    在Windows下保存BMP图片还是挺方便的,直接上代码,拷贝就能用 void savebmp(uchar * pdata, char * bmp_file, int width, int heigh ...

  3. Linux系统管理命令之用户管理

    1.添加用户useradd   2.删除用户userdel userdel aming 彻底删除用户(包括删除用户目录) userdel -r aming 3.用户修改usermod    

  4. RCP常见问题

    1.NoClassDefFoundError 解决办法: 查下依赖和插件启动情况 (manifest的requires和Import.osgi console插件启动情况) manifest的runt ...

  5. VMworld 2015 感受:VMware “Ready For Any”

    今年有机会参加在旧金山举行的 VMworld 2015.今天是正式开始的第一天.争取每天写一篇文章分享所见所听所感.第一天的主要活动,包括上午的 General Session,由 VMware 的几 ...

  6. Java开发之JSP指令

    一.page指令 page指令是最常用的指令,用来说明JSP页面的属性等.JSP指令的多个属性可以写在一个page指令里,也可以写在多个指令里.但需要注意的是,无论在哪个page指令里的属性,任何pa ...

  7. The Google Test and Development Environment (持续更新)

    最近Google Testing Blog上开始连载The Google Test and Development Environment(Google的测试和开发环境),因为blogspot被墙,我 ...

  8. WinCE及Windows软件开发相关书籍转让

    从开始做WinCE开发到现在已经十多年了,最初可以学习和参考的资料并不多,那时候还没有Stack Overflow,Google也还可以正常访问.遇到问题时,一般都在Google Groups的mic ...

  9. AngularJS 控制器

    AngularJS 控制器 控制 AngularJS 应用程序的数据. AngularJS 控制器是常规的 JavaScript 对象. AngularJS 控制器 AngularJS 应用程序被控制 ...

  10. save()、saveOrUpdate()、merge()的区别

    一.Save() save()方法能够保存实体到数据库.假如两个实体之间有关系(例如employee表和address表有一对一关系),如果在没有事务的情况下调用这个方法保存employee这个实体, ...