Skip to Content
学习测试驱动开发
book

学习测试驱动开发

by Saleem Siddiqui
July 2025
Intermediate to advanced
280 pages
3h 5m
Chinese
O'Reilly Media, Inc.
Content preview from 学习测试驱动开发

第 14 章 回顾

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

回顾可以有力地促进变革。一次回顾就能引发一场重大变革。

Esther Derby 和 Diana Larsen,《Agile Retrospectives-Making Good Teams Great》(实用主义书架,2006 年)

我们已经完成了清单上的所有功能。为了清晰起见,我们对清单进行了少量编辑:

5 美元 × 2 = 10 美元

10 欧元 × 2 = 20 欧元

4002 克朗 / 4 = 1000.5 克朗

5 美元 + 10 美元 = 15 美元

5 美元 + 10 欧元 = 17 美元

1 美元 + 1100 克鲁瓦 = 2200 克鲁瓦

删除多余的测试

将测试代码与生产代码分开

改进测试组织

根据涉及的货币确定汇率

改进汇率未指定时的错误处理

改进汇率的执行

允许修改汇率

持续集成我们的代码

划掉列表中的每一行是否意味着我们已经完成了?当然不是!首先,变化是软件中唯一不变的东西。 即使我们决定不碰代码中的任何东西,因为它符合我们的目的,但随着时间的推移,我们代码周围的事物也有界会发生变化。在编写本书的过程中,生态系统中发生了以下变化:

  1. Go v1.17发布。

  2. Node.js v16发布。

  3. Python 3.9 和 3.10 版本发布。

  4. 新版本的 GitHub 操作 setup-node和 setup-python发布。

  5. 更重要的是,COVID-19 的疫苗发布并获得批准,再次改变了我们的生活、工作和社会交往方式,而编写软件正是其中的一个方面。

几乎可以肯定,当您读到这些文字时,我们的代码所处的生态系统中的无数事物也将发生其他重大变化。

除了未来的巨大未知数之外,我们的代码在当下是否还有可以改进的地方?

让我们花点时间回顾一下我们做了什么,并反思一下我们是如何做到的。 我们将从以下几个方面进行回顾:

简介

这是指代码的形状。

目的

这包括代码做什么,更重要的是不做什么。

过程

我们是如何走到今天这一步的,还有哪些其他可能的途径,以及走某条特定道路的意义。

概况

我使用 "轮廓"一词,既包括可读性和显而易见性等主观方面,也包括其客观表现,即复杂性、耦合性和简洁性。 在其他学科中,形式一词也被用来描述类似的方面。

在前言中,我们将简单性确定为测试驱动开发定义中的一个关键术语。现在,我们可以使用一些指标来衡量代码的简洁性。

循环复杂性

循环复杂性是对代码中分支和循环程度的一种衡量,它增加了理解代码的难度。 托马斯-麦凯布(Thomas McCabe)在1976 年发表的一篇论文中定义了这一指标。后来,麦凯布和阿瑟-沃森(Arthur Watson)在测试方法中专门发展了这一概念。麦凯布对循环复杂性的定义与不同语言之间的语法差异无关,而是将源代码组织为控制流图,这与我们从 TDD 的角度分析问题息息相关。

最简单地说,代码块的循环复杂度就是代码中循环和分支的数量加一。

提示

包含p 个二进制决策谓词的代码块的循环复杂度为p+ 1。二进制决策谓词是代码中的任意一点,在这里可以选择两条路线中的一条,即一个布尔条件的分支或循环。

没有分支或循环的代码块,即控制从一条语句线性流向下一条语句的代码块,其循环复杂度为 1。

麦凯布的原始论文建议开发人员 "根据循环复杂度而不是物理大小来限制软件模块"。麦凯布提供了一个 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

AI原生软件交付

AI原生软件交付

Nick Durkin, Eric Minick, Chinmay Gaikwad
生成式人工智能可视化

生成式人工智能可视化

Priyanka Vergadia, Valliappa Lakshmanan

Publisher Resources

ISBN: 9798341663183