《测试驱动开发--Kent Beck》阅读心得

Clean code that works.

这是测试驱动开发(TDD)所追求的目标。具体应该怎样做呢?TDD给出的“套路”如下:

  • Quickly add a test
  • Run all tests and see the new one fail
  • Make a little change
  • Run all tests and see them all succeed
  • Refactor to remove duplication

这本书中文版正文大概就150页,却有31章,每章5页左右。简直就是以TDD的风格写的一本TDD的书,书中有3大部分。下文一一做个简述。

第一部分,资金实例,

以一个资金计算的实际例子,包括资金加,乘还有汇率转换的操作演示了如何以TDD的方式开发一个有用的应用。书中的例子是已Java写的,我用swift和XCTest也实现了一份。跟着做下来,能够获得对TDD开发很直观的体验,很有手感噢。大概在4,5年前,我第一次听闻TDD的时候,也看过这本书,(看了豆瓣里这本书标记想读的时间是2011-11-16,怎不感叹时光飞逝,一无所成。)这次重读,感觉是在读一本新书。我想起《倚天屠龙记》里张三丰教张无忌打太极拳的那个桥段。上次阅读就像是众人在一旁张三丰在打太极,而这次是跟着一旁练习,所谓“get your hands dirty”,最秒的是,测试用例本身能够第一时间告诉你做对了还是做错了。就像是老师傅给你在一旁矫正动作一样。所以,千万不要错过这种体验!很可能会改变自己看待和编写代码的方式。

第二部分 xUinit

正如作者所说,以TDD的方式编写一个xUnit单元测试库,就像是给自己的大脑做外科手术。事实上,作者Kent Beck就是JUnit的一位作者,另一位是同样大名鼎鼎的Erich Gamma(《设计模式》的第一作者。)书中用Python语言编写了一个简单的单元测试库。我原本想跳过的,后面硬着头皮看下来了,对xUnit的理解也更深一层。

对于为什么要这样做,Kent说,

There are a couple of reasons for implementing it even if there is a version already available:

  1. Mastery—The spirit of xUnit is simplicity. Martin Fowler said, “Never in the annals of software engineering was so much owed by so many to so little code.” Some of the implementations have gotten a little complicated for my taste. Rolling your own will give you a tool over which you have a feeling of mastery.
  2. Exploration—Say you are faced with a new programming language. By the time you have implemented the first 8-10 test cases, you will have explored many of the facilities you will be using in daily programming

老司机的套路果然深,让我膜拜不已。xUnit这一部分的内容,也正是作者一遍查着语言参考一边编写出来的。受此启发,我拉了Swift XCTest的库看,不过实在没有信心自己撸一个。

第三部分 模式

经过了第一和第二部分的洗礼,相信读者对TDD已经有些切身体会了。第三部分再升华一下,如果前两部分是拆解招式,第三部分就是传授心法了。此部分微言大义,都是作者的经验总结。对于初学者未免过于简略。就连重构和模式也是一笔带过。这两个主题都有一箩筐的书。好在这几年经过“重构”和“设计模式”的洗礼,看懂和接受是没问题。关键是要练习,让TDD成为自己写代码的“肌肉记忆”。

最后,做个总结,TDD,重构,设计模式。这三者有天然的联系(想想JUnit的两位作者)还有”Working Effectively with Legacy Code"《修改代码的艺术》书里对“遗留代码”的定义:“遗留代码就是那些没有编写测试的代码。”TDD是重构的基础,为重构提供了一张“安全网”,它也能倒逼产生更好的设计。设计模式为重构指明了目标。而正是通过重构的角度,才可能真正的理解设计模式,掌握TDD。此刻有种突破自己限制的感觉,这感觉来的有点晚。有种“我竟然找到了捷径,可惜身已不在起点。” “出来混,总是要还的。” 早年阅读技术书就像读小说,不求甚解。是该改变多做练习了。

这本书以TDD简洁的风格写就,作为阅读心得,自然不敢废话连篇,就此打住!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,475评论 4 372
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,744评论 2 307
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,101评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,732评论 0 221
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,141评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,049评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,188评论 2 320
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,965评论 0 213
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,716评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,867评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,341评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,663评论 3 263
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,376评论 3 244
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,200评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,990评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,179评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,979评论 2 279

推荐阅读更多精彩内容