下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第页我们如何进行代码审查我们如何进行代码审查
发表于:2023-04-10来源:博客园:不详点击数:标签:代码审查
我们如何进行代码审查.JimBird是一位经验丰富的软件开发经理、项目经理与CTO,专注于软件开发与维护、软件质量与安全等领域中疑难问题的解决。在过去的15年间,Jim曾管理过团队建设并主导过高性能的财务系统的建设。他的主要兴趣在于如何提升小团队的效率以构建真正的
JimBird是一位经验丰富的软件(开发)经理、项目经理与CTO,专注于软件(开发)与维护、软件质量与(安全)等领域中疑难问题的解决。在过去的15年间,Jim曾管理过团队建设并主导过高(性能)的财务系统的建设。他的主要兴趣在于如何提升小团队的效率以构建真正的软件:高质量、(安全)、可靠、高(性能)及适应性强。近日,Jim撰写了一篇博文,谈到了代码审查的价值,如何进行代码审查,代码审查的过程以及在代码审查中需要注意的问题,希望能为大家平日的代码审查带来一些启示。
开始代码审查
从一开始,开发者就会互相帮助,如果(测试)中遇到了问题或是有新人加入到了团队,领导或是资深开发者就会审查他们的代码。除此之外,我们还聘请了外部专家进行安全代码审查。
系统发布后,我们决定更加主动一些,开始了基于风险的审查:项目中有人会编写一些风险较高的代码(比如说框架与安全代码、APIs、核心业务逻辑或是之前曾经出现过问题的地方),我们会审查他们的代码。在这个过程中,代码审查体现出了它的价值,我们收获颇丰。即便如此,我们还是更进一步,让代码审查成为一个标准的实践。
这并不是一夜之间就形成的。让团队相信代码审查的价值并不是什么难事,他们已经通过基于风险的审查获得了收益。不过要想改变人们的工作方式就不是那么简单的事情了,还要确保他们有足够的时间进行代码审查,理解并对反馈作出响应。此外,设计一个高效的代码审查流程也是需要花时间的。
一开始,我们让开发者选择好搭档并安排审查,但结果却有些混乱。有时,开发者会寻找那些好说话或是比较忙的人,这样审查就比较容易通过了;此外,两个开发者还有可能事先商量好,因此审查过程就会很快结束。由于人们并不知道要花费多少时间才能完成代码审查,因此审查经常会拖得很久,常常在代码已经完成测试甚至是发布后才完成。
由于大多数人并没有太多的代码审查经验,因此他们并不确定在审查时应该看什么,如何给出有意义的反馈等信息。开发者常常会被负面的批评搞得很沮丧,有时甚至会心烦意乱。
最后,我们决定由领导来完成大部分审查工作。虽然这会增加领导的工作量,也意味着他们没有太多时间编写代码了,不过这么做却是很有效果的。通常情况下,主开发者会对(需求)有着更好的理解,对代码的行为有着清晰的认识,这也意味着他们更有可能发现代码中的错误。由于是同一个人完成了大部分的代码审查,因此被审查的开发者会收到一致的反馈信息。
我们如何进行代码审查
在过去的几年间,我们进行代码审查的方式几乎没有发生过什么大的变化。
无论是谁编写的,无论代码的功能是什么,重要的代码变更是一定要审查的。我们并没有一个正式的审查会议,也没发现使用诸如CodeCollaborator、Crucible等工具有什么必要性,不过现在看起来使用这些工具来管理和追踪审查有助于团队更好的起步。
有时,审查是面对面完成的,不过大多数时候都是离线进行的。审查者与开发者会交换信息,也许通过邮件发送文件,因为我们觉得这种方式更加便捷,也更加方便每一个人安排自己的时间。
随着时间的流逝,审查中的变化之处是审查者该看什么,以及看到的结果。
审查正确性
很多时候,程序员们会花费很多时间争论在代码审查过程中应该看什么,但实际上他们却没有花太多时间完成真正的代码审查。
我们开始代码审查的目的是改进代码质量,寻找测试中没有发现的问题。这么做并不是教授经验不足的开发者如何编写更好的代码,或是如何在团队内分享知识。这些都应该是代码审查所带来的间接好处,不过审查的最终目的应该是确保代码能够正常工作。
相对于使用长长的检查列表,审查者在看代码时首先会问几个问题:
代码的行为是否与预期一致,其逻辑是否是正确无误的?
被审查的代码是否与其他代码拥有类似的结构和功能?
审查可理解性
随着时间的流逝,在代码审查中寻找和得到的东西会发生变化。这是因为代码本身会发生变化,完成这项工作的人开发者与审查者也可能发生变化。
开发者需要在其IDE中装上代码检查工具,同时我们也要使用一些优秀的静态分析工具来自动检查常见的编码Bug和不好的编码实践。这意味着审查者的时间可以花在更加重要的设计错误上,比如说并发Bug、竞态条件和潜在的死锁等,因为这些问题是工具所无法检测到的。
理解,而不是批评
审查的目的是理解代码,确保代码能够正常工作,而不是批评任何人。
在代码审查过程中,请不要掺入诸如"我认为好的代码是什么,你认为好的代码是什么'这样的论战之中。代码审查应该重点关注"我需要完全理解这部分代码才能确保它能够正常工作,如果由我来修复代码中的问题,我是不会这么写的,因此希望你也不要这么来写'。
随着时间的流逝,有些东西会变好,有些则不然
随着时间的流逝,在查看代码时你会发现代码在不断变化。MichaelFeathers发现大部分代码在写完后很少或是从来都不会变化;大部分变更都是发生在代码基中的很小一部分代码上的。
由于审查者会看到相同的代码在不断发生着变化,因此这也会改变他们的审查方式。
避免收益递减
类似于软件开发中的其他实践一样,你最终会发现代码审查有着收益递减的效应,特别是一直在做相同的事情的时候,以相同的方式查看相同的问题。最终会有这样一个阶段,那就是代码审查的价值几乎降到了0。不过这种情况并没有发生在我们身上,我们依然从代码审查过程中获得了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民意调查员工作制度
- 绿色学校建设工作制度
- 编目工作制度汇编模板
- 网格管理中心工作制度
- 羽毛球馆前台工作制度
- 职业学校安全工作制度
- 职工思想建设工作制度
- 联合接访中心工作制度
- 肺炎疫情防控工作制度
- 胸痛中心会议工作制度
- 小学信息技术四年级下册《制作校园生活短视频》教学设计
- 睿信咨询:2026年中国能源行业高质量发展白皮书
- 新疆喀什地区事业单位笔试真题2025年(附答案)
- 2024-2025学年度南京特殊教育师范学院单招《语文》测试卷(历年真题)附答案详解
- (正式版)JBT 14581-2024 阀门用弹簧蓄能密封圈
- 金属与石材幕墙工程技术规范-JGJ133-2013含条文说
- 肌力评定 膝关节屈伸肌力评定
- 初中生物各章节概念知识框架图
- 北京工业大学:大学物理
- GA 1167-2014探火管式灭火装置
- 领导干部个人有关事项报告填报和核查问题课件
评论
0/150
提交评论