`
cantellow
  • 浏览: 847623 次
  • 性别: Icon_minigender_1
  • 来自: 草帽海贼团
社区版块
存档分类
最新评论

代码走读常规流程

阅读更多

 

代码复查(Code Review),又叫代码审查,其基本思想就是,在开发人员编写完自己的代码后,由其他人来复查他写的代码,从而有效地发现代码中存在的缺陷。代码复查的一个基本理论就是,当我们越早发现代码存在的缺陷,我们解决缺陷的代价就越低。

 

代码复查一般包括代码风格,常规缺陷,重大缺陷,程序语言级别缺陷和业务逻辑级别的缺陷,以及设计逻辑和思路的审查等等,甚至也要包括代码性能的考虑。代码复查的原则是正确性、可复用性、可扩展性、可维护性、可读性等等。

 

一提到代码走读,虽然我一次都没经历过,但是脑海里还是会想到一群人围着一个桌子,看着投影仪,作者不停的问:“大家看看这段代码有什么问题没”,大部分的人都还没反应过来这段代码是干什么的,50%的人就算没有看懂也会保持沉默,20%的人会要求作者把逻辑讲一遍,10%的人看懂了然后与作者交流,10%的人看看checklist再看看代码,另外10%的人一直盯着作者的眼睛,或者听他们讲话。(我可能就是最后那一种人)

 

我相信这种codereview效率很低,因为大家把理解代码是干什么的和发现问题放在一起同步进行,等待是同步的通病,我们不需要这种等待,在团队合作中也是如此。我们应该将这部分工作安排在线下进行,每个人按自己的思路理解程序的逻辑,然后找出问题,比如你的代码注释不够多,逻辑结构不够清晰,我们需要标注并且记录下来,这需要工具的支持。关于代码走读工具,可以参考【原】Eclipse Code Review(代码审查)工具介绍

 

不管使用什么工具,它们都遵守一定的代码走读流程,下面是我脑海中的常规流程:

配置(Configuration

codereview之前,首先利用工具,建立review id,这个id就代表本次codereview,然后导入要评审的代码,接着给参与本次评审所有人员输入一个合法的ID,最后再输入一些额外的信息,比如项目名称,描述信息等等。然后评审发起人(代码作者、team leader或者PM)保存信息到配置库上。发邮件通知所有评审人员开始线下评审。

邮件的内容最好有以下几个部分:项目名称,review id,参与评审人员名单;简要介绍被评审代码的功能需求等等,帮助评审人员理解代码逻辑;要评审的代码范围,可以是文件列表;其他受影响的但没有在本次配置中加入的文件和模块;其他信息。

       个人线下评审(Individual review

首先update项目,得到相关配置信息,然后利用工具,得到个人评审的权限(这个权限是第一步review id创建人赋予的),接着根据邮件中的信息选择要评审的项目以及review id,然后开始正式阅读代码,理解代码逻辑,为代码添加评审意见,最好能具体到代码行级别,并且评审意见和代码相关联。当然,个人线下评审可以是多人同时进行的,比如Jupiter就支持这一点,它为每个评审人员都分配了不同的xml文件来保存评审意见,虽然很多配置库不支持多位用户对同一文件同时修改,但是因为是不同的文件,每位评审人员只关心属于自己的配置文件,这样就不存在这种问题了。

团队评审(Team review

当所有个人线下评审完毕,就可以通知进行团队评审了。这一步就是前面描述的场景,但是这时的团队评审要轻松很多,因为大家已经各自明白了程序逻辑,也相应的填写了自己的评审意见。不用再去花费时间理解程序和发现问题了,大家把心思关注在已经发现的问题上。在团队评审时,之前所有进行个人线下评审意见都会暴露出来,这个时候的工作就是,针对每一个问题,讨论解决方法,然后通过工具保存至配置库。

代码修复(Rework

这一步的参与人员只有源代码作者,根据第三步团队评审的意见,一个一个的把问题修复。各自修复完之后,通知所有的评审人员取出最新的配置数据,检查之前发现的各种问题是否修复正确,如果大家一致满意通过,就把本次review状态置为closed,如果未通过,就置为Re-opened

38
73
分享到:
评论
3 楼 seele 2011-06-23  
cantellow 写道
seele 写道
结对编程
需要对需求,业务,对方的代码风格一定了解才能够快速地进行审查

貌似我没提到结对编程呀。


跨业务的话,

A模块的开发人员去审查 B模块的开发人员写的代码,很不现实
2 楼 cantellow 2011-01-15  
seele 写道
结对编程
需要对需求,业务,对方的代码风格一定了解才能够快速地进行审查

貌似我没提到结对编程呀。
1 楼 seele 2011-01-15  
结对编程
需要对需求,业务,对方的代码风格一定了解才能够快速地进行审查

相关推荐

    代码走读记录表模板代码走读记录表模板

    代码走读记录表模板代码走读记录表模板代码走读记录表模板

    代码走读记录

    代码走读记录,又称代码审查记录,包含C++代码走读,JAVA代码走读,C#代码走读

    代码走读检查列表[参考].pdf

    在软件开发过程中,代码走读是一项重要的质量保证活动,它能帮助团队成员理解代码逻辑,发现潜在的问题,以及确保代码遵循既定的设计原则和最佳实践。以下是对代码走读检查列表的一些关键点的详细说明: 1. **设计...

    代码走读[总结].pdf

    快速理解源代码的目的是快速地理解原有代码,找出流程设计中的问题,例如阅读代码来了解程序的功能及其工作方式,修改源代码来改变程序的功能等。这项技术极其重要,因为大多数软件系统的工作投入中,40%~70%是用...

    DPDKL2fwd代码走读报告(代码流程分析).pdf

    DPDKL2fwd代码走读报告(代码流程分析) DPDK(Data Plane Development Kit)是一种高性能的网络数据包处理平台,能够在通用x86服务器上实现高速网络数据包转发。该平台通过使用hugepage、uio、zero copy、cpu ...

    C++代码走读意见--开发注意事项

    ### C++代码走读意见与开发注意事项 #### 内存管理与安全性 在软件开发过程中,尤其是使用C++这类提供底层内存操作的语言时,代码质量和安全性尤为重要。本篇将基于给定的“C++代码走读意见--开发注意事项”文件中...

    单元测试pclint代码走读重点

    3. **流程理解与问题发现**:快速理解代码结构和逻辑,以便找出流程设计中的不足,提高代码效率和稳定性。 4. **代码重构**:在不改变代码功能的前提下,优化代码结构,提升代码质量和可维护性。 代码走读不仅是找...

    代码走读时需要关注的内容分析

    ### 代码走读时需要关注的内容分析 #### 一、准备工作 在进行代码走读之前,准备工作至关重要。这部分主要包括以下几个方面: 1. **设计文档**:确保开发人员已获得一个设计文档来理解代码,该文档应该是最新的...

    FFmpeg开发资料和代码走读报告

    本资料包聚焦于FFmpeg的开发学习,特别是通过一系列的代码走读报告来深入理解其内部工作原理。 首先,我们可以看到一系列的教程源码文件,如`tutorial01.c`到`tutorial08.c`。这些文件很可能是逐步介绍FFmpeg API...

    广播分发代码走读

    #### 二、广播分发流程 广播分发大致可以分为三个主要阶段: 1. **第一步:应用程序向系统发起广播** 2. **第二步:系统内核分发广播** 3. **第三步:目标接收器处理广播** 接下来我们将逐一探讨这些步骤。 ####...

    单元测试代码走读的一些需要注意的内容

    代码走读是一种审查技术,通过检查代码的各个部分来发现潜在的问题。以下是对这些测试项的详细解释: 1. **J1 下标变量越界**:确保数组或集合的索引不会超出边界,防止引发ArrayIndexOutOfBoundsException。 2. *...

    代码走读与研发自测

    详细介绍了代码走读相关的检查点以及单元测试和集成测试相关的理论。

    代码走读检查列表.pdf

    代码走读,也称为代码审查,是软件开发过程中的一个重要环节,它有助于发现潜在的错误、提高代码质量、促进团队间的知识共享以及确保代码符合既定的设计规范和标准。以下是一份详细的代码走读检查列表,它涵盖了从...

    ALSPS原理以及mtk平台代码走读.pptx

    环境光传感器通过光敏电阻,光敏二极管,光敏三极管,硅光电池等光敏元件可以感知周围光线,stk3x1x – 光敏二极管

    ffmpeg播放hls视频流程代码走读

    ffmpeg播放m3u8网络视频文件的流程,详细描述了整个播放过程的代码流程。

    Apache Spark源码走读:如何进行代码跟读

    ### Apache Spark源码走读:如何进行代码跟读 #### 概述 本文旨在探讨如何有效地进行Apache Spark源码的阅读与理解。Apache Spark作为一款高性能的分布式计算框架,在大数据处理领域占据着重要地位。其核心由Scala...

    TI AWR1642 代码走读设计文件

    在这个“TI AWR1642 代码走读设计文件”中,我们将探讨其背后的软件设计与实现。 首先,源码是理解任何硬件设备功能的关键,特别是对于AWR1642这样的复杂系统。源码软件包含了驱动程序、应用程序接口(API)、算法...

    二次雷达代码走读文档.docx

    "二次雷达代码走读文档" 二次雷达代码走读文档是关于二次雷达系统的详细代码分析报告,涵盖了二次雷达的准备工作、程序结构、函数检查等方面的知识点。 一、准备工作 二次雷达文件位于 peripherals 目录下,包括...

    高二2部 走读申请.docx

    文档标题和描述中并没有涉及到IT行业的具体知识点,其主要内容是一个学生的走读申请,涉及的是教育管理和个人事务管理的范畴。由于标签为空,我们无法从标签中获取额外的IT信息。因此,按照要求,我将不会生成任何与...

Global site tag (gtag.js) - Google Analytics