【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

敏捷技巧:什么时候以什么方式来进行代码评审

  • 2010-12-08
  • 本文字数:1558 字

    阅读完需:约 5 分钟

Eric Landes 最近在一篇名为《敏捷技巧:什么时候以什么方式来进行代码评审》提到

代码评审是一个帮助团队提高他们的软件成熟度的工具,并最终意味着交付给客户更高的价值。

他从如下几个环节来介绍代码评审

敏捷工程实践

Eric 首先建议从如下通常敏捷团队需要用的工程实践来展开:

  • 测试驱动开发
  • 持续集成
  • 作战室
  • 结对编程
  • 小版本发布
  • 重构
  • 代码共有

并强调

团队需要确保在代码评审时将好的开发原则牢记于心,进行代码评审是让团队关注他们何时以及是否遵循这些原则和良好实践。

什么时候实施代码评审

代码评审的时机应该由团队来决定,这没有什么标准,这取决于你的团队成熟度和 Sprint/ 迭代的周期,Eric 的建议是

如果你的团队 2 周一个迭代或者 sprint, 那么两个 sprint 之后进行第一次代码评审似乎是个好时机,这时候有足够的代码来评估… 而且好的代码评审能够确保团队关注良好的工程实践,并允许不断引入新的实践。

谁来做代码评审

各种开发水平的开发者应该都要来参加,能够让团队成员学习并强化基于代码的原则,并且一定要有讨论和反馈。同时

你的 QA 同事也要参与,如果他们也有开发任务的话。

开始进行代码评审

如果你是一个团队领导,Scrum Master 或者项目经理但从来没进行过代码评审,别害怕!

因为代码评审并不需要完全手工进行,有一些现成的工具而且团队的技术成员也会来帮你,但你要做好充分的事先准备。

准备

Code Coverage 代码覆盖率

Eric 告诉读者

一个团队需要有一些基本的质量标准,比如单元测试的业务逻辑的代码覆盖率,有很多这样的工具,比如.NET 环境下的 nCover,Visual Studio Test 等,Java 环境则有 jCover, hansel, CodeCover 等。

并且

代码覆盖率会反映一些问题,如果有覆盖率有低于 20% 的代码,那可能要对其提出疑问…要注意…也许会有一个好的理由,但是这更多是一个谈话的开始,而不只是一个报告卡。

Architecture 架构

对于代码评审的架构部分,Eric 提到

这也是个了解架构的好时机…要把所有的老架构图和最新的架构以及类库放到一起进行…

Code Analysis 代码分析

可以借助于工具来做一定的事先分析,

在会议之前通过分析工具过一遍代码,这样你可以知道关注什么,从哪开始。

相应的工具比如.NET 环境下的 nDepend,他们生成的报告可以告诉你循环的复杂度以及继承的深度等。

代码评审

准备好后就可以和团队进行会议了,但要预留出讨论的时间,给团队来互动并相互指导。 Eric 建议

团队的大小和特点决定会议需要多长…比如在一个 8 个开发者,一个项目经理,一个开发经理的团队,大概需要一个半小时来进行代码评审…但这只是在第一次会议有用,之后就要基于第一次的结果来适应和调整。

实际当中我们的代码评审时间可能比这个都要长,如何更有效地展开代码审核会议,作者还提供了以下一个时间安排的例子:

1) 概览本次代码评审的故事 (10 分钟)

2) 讨论团队指标 (10 分钟)

3) 强调评审的特别关注点 (5 分钟)

4) 深入地评审代码 (55 分钟)

a) 代码覆盖率

b) 架构

c) 深入的分析报告

5) 总结并记录行动事项 (10 分钟)

这样的例子可以提醒团队关注什么是最重要的,这也会因团队实践而不同。在评审中团队成员不仅要关注单元测试的覆盖率,复杂度,也要关注依赖性,耦合性等。

他总结说

在会议中,团队应当讨论上面所列的问题,而且任何问题都应该可以交流…如果需要对之采取行动…那就记下要跟进的事项,以确保问题得到解决。 在会议结束的时候…回顾行动项目并且提示团队实践中的积极方向。

代码评审实施完了!

你也许已经按照上面的步骤实施了一次代码评审,他最后再次提醒读者

记住代码评审是一个帮助团队提高他们软件工程成熟度的工具,而且这将最终意味着交付给客户更高的价值!

Eric Landes 是一个来自于大型公司 IT 部门的项目经理、特别专注于敏捷团队的教练。他拥有超过四年的经验使用敏捷 / 精益技术以实现客户价值和并让团队专注于项目。

感谢金明对本文的审校。

2010-12-08 04:513750
用户头像

发布了 42 篇内容, 共 17.1 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

实践基地+新工科实训 青软与西南大学展开多元校企合作

神奇视野

关于Copy On Write Array List,你会安全使用么

华为云开发者联盟

List 开发

阿里三面被面试官狂问Redis,简历上再也不敢写"精通"了

退休的汤姆

面试题 阿里 秋招 redis 底层原理

如何让工业制造拥有更强的“数字内核”?

天翼云开发者社区

即刻报名|汽车制造行业如何玩转大数据分析?

Kyligence

数据分析 汽车制造

Bytebase 1.3.1 - 2022.8.18

Bytebase

SQL优化 database SQL审批

"教练,我想打篮球!" —— 给做系统的同学们准备的 AI 学习系列小册

Zilliz

人工智能开源

云上开发如何实现持续代码提交

华为云开发者联盟

云计算 后端 代码

RT-Thread记录(十三、I/O 设备模型之PIN设备)

矜辰所致

RT-Thread 8月月更 I/O设备模型

重庆邮电大学新工科训练营 实践Java和大数据方向全真产业项目

神奇视野

开源一夏 | MySQL 事务的隔离级别

六月的雨在InfoQ

开源 mysql事务 MySQL 数据库 8月月更

DPDK技术原理与架构

C++后台开发

虚拟化 DDoS DPDK VPP NFV

企业搭建知识库的重要性,你了解多少?

Geek_da0866

天翼云TeleDB系列产品升级发布会开幕在即,精彩邀您共鉴

天翼云开发者社区

使用 Canonical MAAS 部署 openEuler 测试

openEuler

centos 开源 操作系统 openEuler MaaS

金融机构求索数据价值,“数牍方案”提供可行解 数牍科技

Jessica@数牍

隐私计算 金融行业 数据隐私安全

注册荣耀开发者,惊喜抽好礼!邀请5位好友赢50元购物卡~

荣耀开发者服务平台

开发者 手机 智慧屏 荣耀 honor

翻译 | Kubernetes Operator 对数据库的重要性

RadonDB

Kubernetes operator RadonDB 数据库·

开源一夏 | SSO单点登录流程源码学习

六月的雨在InfoQ

redis 开源 SSO 单点登录 8月月更

2000字带您了解什么是 SD-WAN,它是如何工作的?

wljslmz

SD-WAN 网络技术 8月月更

如何实现跨数百个K8s集群的管理

云原生技术社区

istio 服务网格 K8s 多集群管理 Istio流量管理

翻译|是否应该在 Kubernetes 上运行数据库

RadonDB

MySQL Kubernetes RadonDB 数据库·

2022“易观之星”年度奖项启动征集,发现卓越数智力量

易观分析

报名 数智化 易观之星

天翼云入选可信边缘计算推进计划与分布式云扬帆计划首批成员单位!

天翼云开发者社区

Shopee商家数字商品可配置系统设计与实现

Shopee技术团队

前端 Shopee

兆骑科创创新创业服务平台,云路演,人才引进平台

兆骑科创凤阁

Mysql和Redis数据如何保持一致

京东科技开发者

数据 数据一致性 MySQL 数据库 数据库· redis 底层原理

工业智能化转型升级难?华为云这三招,加速商业变现

华为云开发者联盟

云计算 后端 华为云 工业智能化

第一时间快速了解 Kubernetes 1.25

云原生技术社区

容器 云原生 kubernetes入门 kubenetes Kubernetes, 云原生, eBPF

青软集团蝉联华为云「千万俱乐部奖」「最佳销售黑钻奖」两大奖项

神奇视野

参与开源共建,你不可不知的贡献技巧

OpenHarmony开发者

OpenHarmony

敏捷技巧:什么时候以什么方式来进行代码评审_研发效能_晁晓娟_InfoQ精选文章