coding dojo 经验总结

周六参加Dojo ,氛围很活跃,嗨一下午,记录一下心得。

1. 搭建的环境TDD的环境很重要。

        自己一个人练习,环境熟悉即可; 当多个人练习的时候,需要一个环境来协作和展示。看到vim用的很溜的代码写起来感觉搜搜爽:)

        好几个人都提起cyber-dojo 是一个好工具。隔离环境准备问题,同时也是展示环境和协作的环境; 同时可以回放代码演化的过程。 果然是好东西大家都在用.

        另外看到spock 比junit 可读性好很多,下次还spock试试。

2. 反馈重要性

        TDD 之所以有效,是反馈的及时准确以及可稳定。 这个需要充分利用起来。

        测试编译失败反馈

        测试运行失败反馈

        更直接有效的大脑反馈, 是基于大脑预期反馈。 在新增测试,先不要运行测试!在运行测试之前,刻意暂暂停一下! 留给大脑一点时间,让大脑判断当前的结果是什么? 测试会成果吗? 如果不会,测试会报什么错呢? 然后运行,与大脑的预期结果判断,是否一致。 一致说明大脑的确掌控一切; 不一致,那么大脑某个地方纠正。  TDD希望根据反馈结构,让一切都在掌握只用

3. 测试用例分解

      测试如何分解,这个是TDD难点之一。 不能分解的测试 ,很难引导你驱动和演化出代码。 但是如何分解?可以分为下面几个case:

a.刚开始的时候,从哪里开始? 第一个test case 怎么选取?从最简单的开始,能下到的最简单开始。 比如今天从一位数开始。

b.当前情况下,下一个最小的测试用例是什么?这里面最关键词是“最小”,你认为下一个最小的用例是什么?这个需要练习,使得开发过程尽可能平滑

c.当思路受阻时,怎么办? 需要重新思考?回退?还是换一个case?这个下次留意。

d.    当前最小用例还是很复杂的时候? 怎么办? 需要简化一下用例,寻找一个中间的垫脚石,让当前的代码平滑演进?

当最后找不到失败的测试用例时,怎么保证结束(DoD)? 做到测试用例的补重补漏?

4. 重构

TDD中另外一个难点就是重构?重构使得代码更加清晰,同时使得代码为未来增加新功能(跳跃)做好准备。

TDD中重构的两种类型

当识别出来坏味道的时候(重复,神奇数字,hard code,可读性不清晰,代码名字词不达意), 需要重构,去除坏味道。

另外一种case,当需要添加新功能时候, 需要对现有的代码修改使得对下一个case做好准备。 比如( 函数提提取,增加参数)

重构时间点

重构也对代码的修改,所以一定需要在测试通过的情况下进行。 有了防护网,避免引入潜在的错误,使得重构才有信心。

重构需要小步前行

重构是对代码的修改, 不管是对于去除坏味道,还是为未来做准备,都会引入bug,所以也需要小步前行。 如果改动太大,一次性改动导致太多的case失败,却很难定位到时哪里出错。这样花的时间去查找问题, 不如小步修改。 每一次修改一点,使得尽少出错,或者出错一眼就发现,使得对代码更有信心;同时将查找问题的时间换算成代码小步演进过程,这个也是一个划算的买卖。 这个也是一个难点。需要技巧,同时需要克制自己贪婪的内心,这个需要刻意练习。

比如要在Guess number,提取的循环的时候,先让当前的各种case可以跑过,延时提取的时候。(当另种不同类型的case合并,先等到两种类型case都完善后,在合并)

NOTE:学习优秀代码的演进

好的代码是如何写出来的?我们往往看到代码最终状态,却不知道代码是如何演变出来的?  Coding dojo给们这样一个好的机会。 不但可以看到同一个问题最后不同语言的不同实现,同样也可以看到代码是如何演化过来的。 一步一步代码从无到有,功能一点点如何增加,代码如何重构过来,测试如何驱动这些。使得陡峭的学习曲线平滑下来,大大降低学习难度。 更重要的是看到背后是如何思考的,问题是如何划分,功能时如何增加,代码如何重构,一步一步,这才是要学习的。也是dojo ,给集体学习的关键。dojo形式,用tdd方法结合pair-programming,这个感觉很嗨!

这是最后自己搭档小成迭代的代码 github,还是 挺满意的:)

另外感谢有激情新老朋友周末能参加,感谢老司机 @武可 带我们飞.


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