关于代码审查的几点建议

Code Review即代码审查是软件开发中常用的手段,它和QA测试相比,更容易发现架构以及时序相关等较难发现的问题,还可以帮助团队成员统一编程风格,提高编程技能等。代码审查被公认为是一个提高代码质量的有效手段。目前很多开发团队虽然进行了代码审查,但是他们可能没有有效、合理的进行代码审查,以致没有很好达到代码审查的目的。近日,BIDS 贸易科技有限公司的CTOJim Bird 总结了关于代码审查的一些建议。现对这些建议进行了一个全面的梳理,具体内容如下:

1、代码审查不要太正式

目前,有很多研究表明正式代码的评审会议会延误开发进度和增加开发成本。尽管可能只需要几周的时间进行代码评审,但是只有4%的缺陷是在会议期间发现的,其余所有的权限是靠代码审查者自己发现和处理的。只有采用简短、轻量的代码审查才是有效的发现问题在代码检查,这样的代码审查更适合迭代、增量开发,为开发者提供更快的反馈。

2、代码审查人员要尽可能少

并不是代码审查人员越多就能发现越多Bug,只有合理数量的审查人员才能够更加有效的地审查代码。研究表明,平均来说,一个代码审查人员能够发现Bug的一半, 第二审稿人会发现剩余新问题的一半。多个人同2个人发现问题的数量没有太大差异,故两个人进行代码审查是比较合适的。另外,还由于社会惰性的存在,更多代码审查人员意味着多人在寻找同样的问题,使得审查人员积极性、主动性不高,更加不利于代码审查工作的有效进行。

3、需要有经验的开发者进行代码审查

研究充分表明,代码审查的有效性依赖于审查人的技能和对问题领域以及代码的熟悉程度。如果让新加入团队的成员进行代码审查的话,并不利于他们的成长,且对于代码审查来说也是一种非常糟糕的方式。只有擅长阅读代码、程序调试、非常熟悉语言、框架、对应的问题的人才最适合代码审查,才能够高效发现问题、提供更多有价值的反馈。新的、没有经验的开发者只适合检查代码的变化和使用静态分析工具并和另一位评论人员共同代码审查。

4、实质重于方式

完全按照编码规格标准进行的代码审查是一个浪费开发人员宝贵时间的方式。代码审查的实质是确认代码能够正确的运行,发现安全漏洞、功能错误、代码错误、设计失误、安全验证和防范、恶意代码等。而不是单单按照编码规范完全保证代码格式一致,而丢失了代码审查的实质。

5、合理安排Bug 和可维护性问题代码的审查时间分配

发现代码中的Bug是很难的,在别人的代码找到的Bug更难。研究表明,代码审查人员找到Bug和可维护性、可读性问题的比例是25:75,故消耗在了代码可读性、可维护性等问题上和Bug上的代码审查时间应该合理分配。

6、尽量使用静态代码分析工具以提高审查效率

工欲善其事,必先利其器。静态代码分析工具可以帮助程序开发人员自动执行静态代码分析,快速定位代码隐藏错误和缺陷;帮助代码设计人员更专注于分析和解决代码设计缺陷;显著减少在代码逐行检查上花费的时间,提高了软件可靠性并节省软件开发和测试成本。

7、二八定律处理高风险代码

审查所有的代码并没有太大的意义,应该把审查的重点放在高风险的代码和容易引起高风险的修改或者重构的代码上。旧而复杂、处理敏感数据、处理重要业务逻辑和流程、大规模重构以及刚加入团队的开发者实现的代码都是审查的重点。

8、从代码审查中尽量获得最大的收益

虽然代码审查是发现Bug、提高开发人员代码编写质量的重要方式,但是它也增加了代码开发成本。如果没有合理、有效的进行代码审查,将有可能影响项目进度和破坏团队文化。故我们要紧抓代码审查的实质性问题,尽早和经常性的进行非正式的代码审查;选择精而少的人员并运用二八定律审查高风险的代码,同时,还需要合理分配Bug以及可维护性问题的代码审查时间,才可以从代码审查中获得最大的收益。

原文发布时间:2014-09-06

本文来自云栖合作伙伴“linux中国”

关于代码审查的几点建议相关推荐

  1. 3年编程经验无名校背景,全栈小哥是如何拿下Twitter Offer的?

    作者 | zhiachong 责编 | Aholiab 头图 | CSDN 下载自视觉中国 出品 | CSDN(ID:CSDNnews) 外国小哥zhia是个有面试绝技的人,他只有三年的编程经验,并且 ...

  2. SonarQube4.4+Jenkins进行代码检查实例之一

    在最新的< 关于代码审查的几点建议>中再次提到了代码分析: 6.尽量使用静态代码分析工具以提高审查效率. 笔者之前也谈到过多次代码分析.代码检查,见: 关于代码评审的微博讨论汇集  #敏捷 ...

  3. DevOps的发展史

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! - 1 - 可操作的概述 多亏了云计算和开源,软件开发的速度从几年缩短到几个月. 每家公司都在向一个软件公司转变. ...

  4. 什么是Barr-C?

    Barr-C是Barr Group的编码标准,旨在减少嵌入式软件中的漏洞,并引入风格指南,提高可维护性和可移植性. 在这里,我们将阐释什么是Barr-C,开发人员如何使用BARR-C:1018检测C语 ...

  5. 2014-9-4 技术创业分享汇

    2014-9-4 技术创业分享汇 互联网动态 粉车匠:电动自行车领域的O2O电商-主打维修维护电动自行车服务 Savant智能家居系统,获KKR 9000万美元投资,主要面向的是豪宅和专业用户 高科技 ...

  6. twitter软件资源_以软件工程师的身份在Twitter上找到工作[我的工作方式]

    twitter软件资源 这是关于我如何在Twitter上担任全职软件工程师的工作,经历的经历,准备的过程以及为什么最终决定加入该公司的故事. Click-clack-click-clack . 我的手 ...

  7. ​Google 鼓励的 13 条代码审查标准,建议收藏!

    作者 | Rafiullah Hamedy 译者 | 弯月,责编 | 杨碧玉 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID:CSDNnews) 以下为译文: 在本文中,我们将简要介绍 ...

  8. Google 鼓励的 13 条代码审查标准,建议收藏!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | Rafiullah Hamedy 来源 | h ...

  9. 高效代码审查:来自前质疑者的9个建议

    转自:http://www.iteye.com/news/30235 理论我知道.代码审查(Code Review)有助于: 抓bug 保证代码的可读性,可维护性 在团队中散播代码的知识 让新人适应团 ...

  10. [置顶] 代码审查工具FxCop建议采用的规则总结

    续接: 代码走查工具篇FxCop的规则总结与翻译_Part1 代码走查工具篇FxCop的规则总结与翻译_Part2 代码走查工具篇FxCop的规则总结与翻译_Part3 本篇结合我的实际工作需要,总结 ...

最新文章

  1. 如何通过 DJI SDK 控制无人机运动
  2. Django 执行 makemigrations 显示 No changes detected in app
  3. webmagic抓取实例
  4. matlab 红黑强度图片,matlab图形锐化程序
  5. 鲲鹏服务器的作用,眼见为实,华为鲲鹏架构服务器生态大揭秘
  6. Mongodb系列- java客户端简单使用(CRUD)
  7. 关于如何获得网站集宿主网站集地址的问题
  8. linux tbb 安装_Ubuntu18.04 GCC9 安装
  9. AI 用神经网络实现序列到序列的学习
  10. 寻找春天nbsp;九宫格日记-2014.03.08
  11. 计算机二级vf上机考试题库,计算机等级考试二级VF上机题库
  12. C++求最大公约数和最小公倍数
  13. 基于HostLink协议的Fins命令读写
  14. 使用虚拟机备份软件恢复OpenStack虚拟机
  15. 在编程中常见的一些英语词汇
  16. 推荐一个制作ios图标的网站
  17. CSS实现多行文字两端对齐的效果
  18. 搜索引擎优化SEO的基本技术
  19. 高德地图打包报错:‘AMap‘ is not defined 解决方案
  20. itunesconnect 招行香港一卡通收款问题

热门文章

  1. Atitit Atitit.软件兼容性原理----------API兼容 Qa7
  2. atitit.基于  Commons CLI 的命令行原理与 开发
  3. Julia : DataFrame与replace、delete
  4. 京东量化平台宣告下线,其他平台该何去何从?
  5. Java中一个逐渐被遗忘的强大功能,强到你难以置信!
  6. 技术人成长路径之我见
  7. Linux基金会发布开源Hypervisor项目ACRN支持物联网设备开发
  8. 2021全国研究生数学建模竞赛B题思路
  9. 【图像加密】基于matlab仿射变换数字图象置乱【含Matlab源码 1171期】
  10. 【气动学】基于matlab GUI改进的遗传算法和高斯烟羽模型模拟气体扩散【含Matlab源码 1060期】