记2015年11月14日全球编程静修日(Global Day of Coderetreat)

       昨天有幸参加了记2015年11月14日全球编程静修日(Global Day of Coderetreat)北京站第一场的活动,活动共有近20位道友到场。特别感谢组织者伍斌_ben, Mr.D.Q, 何永振以及敏娜的辛勤付出。赞助者北京奥克巴尔科技有限公司热情的美妹和可口的午餐给我们留下了深刻的印象,修炼的间歇还品尝了奥克巴尔公司美味的点心和饮料,蜂蜜柚子茶被我消灭了一瓶。

      编程静修活动除了主持人的开场白、自我介绍和修炼题目剖析外。主要组织了5个session。每一个session都会添加一个限制条件,然后道友们两俩结对编程,以TDD的方式

编写代码完成需求。 大家在毫无压力的情况下尽情的体验 红-绿-重构 的过程。

     一起叫老鱼(玉德俊)的道友不但技术精湛,而且行事雷厉风行,速度效率俱佳,当场即对全天的活动做了很到位的记录。这里分享给大家,也留着自己以后回顾。特别感谢老鱼的无私分享。

------------------------------------------------

老鱼 18:37

Session 1: (结对原则,两个人一个电脑,首先写测试用例,再写函数通过测试,进行ping-pong轮换即两个交替写用例和函数)

1 不需要写满足超过测试以外的代码
2 每个测试方法要明确指出期望的行为
3 测试粒度要尽可能小,方法要小
4 代码的block 感觉要好一些

Session 2(每个函数的步长小于5):
1 测试名称体现的好
2 用最简单的初始化方法,图形化显示更容易体现
3 用最小化的方法满足测试
4 直接不断的用测试来实现业务逻辑,直接加输入和输出,在测试里面就把图加上,
5 先实现满足测试,再做重构
6 每次红绿之后,再来考虑进行重构

Session 3(不充许使用if判断和for循环):
1 if判断和for循环本质上不可能绕过去的,只是可以采用一些技巧替代实现
2 可以采用函数指针替代if,也可以在测试里面构造alive和dead的不同测试方法进行,
3 python里面可以用map来替代for操作,通过切片代替for
4 不同语言都有一些技巧性的东西替代for操作

Session 4(采用更高抽象的描述,代码更加具有语义性):
1 把需求描述直接放到测试代码注释里面,通过测试直接体现需求
2 测试用例写得步子太大,则不容易在有限时间内实现
3 要先写完测试用例,再写实现逻辑
4 测试用例要考虑覆盖到极植,如周围带8个的,根据迪米特原则,cell里面不需要知道自已的位置,只要map知道就可以
5 关于自顶向下和自下而上的设计理念,取决于不同的情况,在TDD里面比较适合从下而上,否则需要大量的桩
6 没有必要省空间,写长变量名,更容易体现测试的行为

Session 5(互相之间不许交谈,代码之间没有注释)
1 通过长变量名和长函数名体现意图
2 用代码来体现你的意思,计算机代码是用来给人读的,偶尔让计算机执行一下
3 碰到特别复杂的代码(如四层for循环),可以考虑把这些部分单独抽出来,单元进行了测试了以后,再进行集中测试

  ——摘自老鱼分享在微信群的小结

------------------------------------------------

       session1 我和奥克巴尔的小伙子孙巍结对,用着他的Apple, 尽管键盘的操作上还有一些不习惯之外,但想着体验了苹果产品的使用,心里美滋滋的。尤其是孙巍谨慎的思维和突出的协作能力给了我莫大的惊喜。第一个session我们通过了三个测试,并在集体review阶段介绍了我们组的代码和思路,非常有收获。session2的搭档李宁对需求价值的理解和小步快跑的把握给了我很多启发。李进安,符章文,程鹏等道友丰富的经验引起我很多思考

这一次的活动,收获非常多:
1、体验了TDD的过程,对TDD有了一些初略的认识,期待进一步的学习和实践。
2、review 阶段提出了一些非常好的建议,化解了自己的诸多疑问。 

3、三位主持者非常的优秀,自始至终让大家沉浸在轻松愉快的合作和编程体验中。从TA们那里让我学到了非常重要的一点:要善于发现优点,懂得欣赏他人,尊重同行。真的很感谢TA们!

      期待Global Day of Coderetreat 2016.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值