写点什么

通过测试驱动开发和结对编程提高生产水平

  • 2009-05-28
  • 本文字数:1116 字

    阅读完需:约 4 分钟

“测试驱动开发”和“结对编程”是最著名的两个敏捷实践,然而许多敏捷团队并没有采用。通常大家找借口说“太忙”,没时间采用测试驱动开发和结对编程这样的实践;实际上,他们的意思是追求高质量的代码会降低生产效率。在这里,Mike Hill 解释了这种逻辑有多么错误。

Mike 告诉我们,从本质上讲,想要“更快”,必须“更好”

你牺牲质量,能换来更多的功能吗?不仅不是这样,而且恰恰相反:你追求的效率越高,你越应该提高内部质量标准。

想要提高生产水平,首先提高内部质量。

然后他告诉我们为什么会这样:

所以,为什么会这样呢? 1. 因为内部质量和外部质量并不是一回事儿。
2. 因为恰恰就是昨天的产品质量唯一决定了今天的生产水平。
3. 因为打字现在不是,永远也不是编写代码的瓶颈所在。

Mike 随后展开叙述这 3 个理由。首先,他用单词“质量”阐述外部质量内部质量的区别,外部质量可以认为是产品有多少功能,而内部质量指的是实现这些功能的代码。他这样加以区分,是为了说明想缩短市场投放时间,可以降低外部质量,但是决不能降低内部质量。

接下来,Mike 描述了“昨天怎样决定今天”,或者说已有代码的内部质量何以影响当前的生产效率。

一整天,每当你开始动手,都要依赖已有的代码。要研究的每一行代码会降低你的速度。每一个对外开放的依赖关系会降低你的速度;每一个糟糕的变量名称会降低你的速度;每一个设计时的错误决定,不论大小,都会降低你的速度。 如果你想尽可能快地工作,就需要编写干净整洁的代码。

最后,Mike 对这个常见的误区进行了反驳:即很多人认为结对编程和测试驱动开发由于“只有一半的人打字,只有一半代码是产品代码”,所以会降低产出(生产效率)。为此,Mike 列举了“编程”时常见的 11 种活动,然后说道:

请注意往电脑里打字只占列表很小的一部分,因为编程时真正有难度的是思考,而不是打字。列表中所有其它内容(可能扔东西要除外)都是关于思考的,而不是打字。 测试驱动开发可以提高生产效率,因为它有助于思考。它避免了你编写代码时从头再来和对功能的画蛇添足,减少了代码的反复研究和调试。结对编程由于同样的原因也会提高你的生产效率。两个开发者在一块并不能像分开打字那么快,但是我们并不担心:软件开发的瓶颈是思考 [不是打字],而结对编程和测试驱动开发都能提高思考效率

Mike 概括总结了 3 个建议,可以提高团队的生产效率:

如果你想提高团队的生产效率,就照这 3 条做:

  1. 修改任何代码前先编写一个会失败的简短测试
  2. 遵循“不结对,不干活”的原则
  3. 所有人要认识到内部质量的重要性

如果你知道有人(或者就是你自己)认为他们“没有时间结对或者测试驱动开发”。希望 Mike 的文章能够有所帮助。

查看英文原文 How TDD and Pairing Increase Production

2009-05-28 21:242692
用户头像

发布了 37 篇内容, 共 12.2 次阅读, 收获喜欢 5 次。

关注

评论

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

扬帆云栖,英特尔携手阿里云共缔数智精彩

E科讯

懒人一键安装:pd虚拟机专用windows系统镜像(m1/intel)

你的猪会飞吗

Mac软件下载站 mac破解软件下载

JetBrains pycharm pro 2024最新永久激活码 pycharm2024下载安装

Rose

828加速数字化转型!华为云Flexus X实例3重优势上云无忧

轶天下事

828上云有妙招!华为云Flexus云服务器X实例帮助上云“破题”

轶天下事

828上云正当时!华为云Flexus X实例革新云服务体验

轶天下事

使用 Higress AI 插件对接通义千问大语言模型

Se7en

腾讯秋招面试,人麻了。。。

王中阳Go

腾讯 面试 面经 大厂面试 秋招

828开启上云第一步!华为云Flexus云服务器X实例“柔性算力”领先体验

轶天下事

828云服务触手可及!华为云Flexus X实例再掀上云浪潮

轶天下事

【第4期】搜索客 Meetup | INFINI Pizza 网站 SVG 动画这么炫,我教你啊!

极限实验室

SVG ChatGPT 极限科技 Pizza 搜索客社区

云起无垠荣获第九届“创客中国”网络安全专题赛二等奖

云起无垠

抖音商品sku数据接口(Dy.item_sku)丨抖音平台API数据接口指南

tbapi

抖音商品详情数据接口 抖音API接口 抖音商品sku接口

adobe AU2024系统要求 附Audition 2024中文破解版安装包 Mac/win

Rose

鸿蒙保障应用开发安全的技术措施

芯盾时代

鸿蒙 嵌入式

828数字化转型正当时,华为云Flexus云服务器X实例让上云更简单

轶天下事

AIGC云平台解决方案如何重塑电商设计流程

3DCAT实时渲染

AIGC云平台 AIGC解决方案 AIGC创作云平台

淘宝商品详情API接口:电商营销的坚实基石

代码忍者

API 测试 pinduoduo API

AI Native平台,跨越AI应用从创新到生产的鸿沟

阿里云大数据AI技术

人工智能 阿里云 云栖大会

2024开放原子开源生态大会将启,深开鸿与您一起共促生态繁荣

科技热闻

邮储银行,奔跑在智能化软件开发的春天里

脑极体

AI

“柔性算力”首款云服务器亮相828!华为云Fleus X 实例体验升级

轶天下事

828轻量级云服务器超值!华为云Flexus X实例助力业务高速增长

轶天下事

828首选“小快轻准”云服务!华为云Flexus X实例助力扫清上云阻碍

轶天下事

在爬取京东商品详情信息时,如何处理验证码问题?

tbapi

京东商品详情数据接口 京东API

苹果电脑几款好用的效率翻倍工具,轻松管理剪贴板!

Rose

通过测试驱动开发和结对编程提高生产水平_研发效能_Mike Bria_InfoQ精选文章