TDD+结对编程活动分享

TDD+结对编程活动分享

关于活动

为了让大伙能体验编程的乐趣. 易贷项目iOS的小伙伴们组织了一场TDD+结对编程的活动.

概念介绍

首先和大伙介绍几个概念:

为什么需要TDD

我们都做过这样的事——写一大堆代码然后艰难地使它工作起来. 也就是先建造再修正. 测试是在代码写完之后的事情. 这种很难预料的过程被亲切地称为“调试”, 我们可能会在其中花掉半个小时. 修改一个bug可能导致产生另一个, 甚至是一系列的bug.
我们需要TDD, 这是因为我们是人类, 人类会犯错误. 计算机编程是一项非常复杂的活动. 除了其他原因, TDD还是自动化测试用例, 通过它, 我们系统地得到按我们的意图工作的代码, 并且可以同时保持这些代码可工作.

什么是TDD

全称:测试驱动开发
TDD的原理是在开发功能代码之前, 先编写单元测试用例代码, 测试代码确定需要编写什么产品代码.

什么是结对编程

结对编程技术是指两位程序员坐在同一工作台前开发软件. 与两位程序员各自独立工作相比, 结对编程能编写出质量更高的代码.

需求介绍

考虑到是晚上编程, 时间上比较紧张. 我们用来练手的是一个简单的需求.

描述

实现一个Calculator计算器类, 完成加减运算.

例子

  • 输入 @”1+1” 返回2
  • 输入 @”1+1+1” 返回3

分组实现需求

最开始的用例尽可能的简单,只有@"1", 实现起来也只是return 1. 随后的用例一点一点复杂起来, 期间我们也多次推倒重构.

在用例的构造上是小伙伴A写用例,其partner写实现代码, 然后小伙伴A去优化这段代码要去嵌套层次不得大于两层. 然后交替写用例.

最后完成的时候所有的分组再在一起互相晒代码.

有意思的是, 分组内是结对编程, 代码互相理解起来无难度, 自己和partner之间也很融洽, 讨论的兴致也很高昂; 可是当去看其他组的代码的时候, 大伙一致评价其他组的代码可读性差.

总结

通过这次活动,我们意识到2个人一起考虑问题要比1个人思考更加全面一些.我们这个小需求都能推倒重写代码, 而实际项目中需求变更的则更加频繁. 如果没有一个好的测试保障, 我们根本没有勇气推倒重构. 大伙还没有掌握重构的一些方法, 还需要努力.

感想

以下是参与的一些小伙伴的感想

A:

TDD:通过tdd,可以提高我们的代码质量,在编写代码之前考虑得更全面
结对编程:通过结对编程,个人觉得写代码时需要考虑扩展性,不然后续需要全部推倒重写,对以后的开发同事造成了大量的伤害。

B:

结对编程:有利于提高代码质量和编码速度,提高时间利用率,有个弊端可能彼此的思维想法交换不够充分,走入死胡同
TDD:可以在编码前考虑代码更全面,也能提高编码质量,可以慢慢将TDD融入我们项目中,可以从一些常出问题的请求开始写测试案例了

C:

TDD:测试驱动开发,在编写某一个功能模块之前,先把这部分的测试用例写好,可以在代码编写的早期,发现问题,解决问题,及时重构。
结对编程:两个人用一台设备进行编程,这种方式可以提高工作效率,并且对于某一个问题进行分析时会分析的更加全面,对于这种方式可能还不太适应,日后可以多进行这种训练。

D:

无论是结对编程还是TDD思想,在实际开发工程当中都是很有帮助的。
当然,最有效果的还是通过这种活动引发思考,去解决问题,尤其是结对编程,效果非常明显。

E:

TDD编程很效率,发现和解决问题效率,希望以后能多参加这种活动!非常感谢!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
测试驱动的编程是 XP 困扰程序员的一个方面。对于测试驱动的编程意味着什么以及如何去做,大多数人都做出了不正确的假设。这个月,XP 方面的讲师兼 Java 开发人员 Roy Miller 谈论了测试驱动的编程是什么,它为什么可以使程序员的生产力和质量发生巨大变化,以及编写测试的原理。请在与本文相随的 论坛中提出您就本文的想法,以飨笔者和其他读者。(您也可以单击本文顶部或底部的“讨论”来访问该论坛。) 最近 50 年来,测试一直被视为项目结束时要做的事。当然,可以在项目进行之中结合测试,测试通常并不是在 所有编码工作结束后才开始,而是一般在稍后阶段进行测试。然而,XP 的提倡者建议完全逆转这个模型。作为一名程序员,应该在编写代码 之前编写测试,然后只编写足以让测试通过的代码即可。这样做将有助于使您的系统尽可能的简单。 先编写测试 XP 涉及两种测试: 程序员测试和 客户测试。测试驱动的编程(也称为 测试为先编程)最常指第一种测试,至少我使用这个术语时是这样。测试驱动的编程是让 程序员测试(即单元测试 ― 重申一下,只是换用一个术语)决定您所编写的代码。这意味着您必须在编写代码之前进行测试。测试指出您 需要编写的代码,从而也 决定了您要编写的代码。您只需编写足够通过测试的代码即可 ― 不用多,也不用少。XP 规则很简单:如果不进行程序员测试,则您不知道要编写什么代码,所以您不会去编写任何代码。 测试驱动开发(TDD)是极限编程的重要特点,它以不断的测试推动代码的开发,既简化了代码,又保证了软件质量。本文从开发人员使用的角度,介绍了 TDD 优势、原理、过程、原则、测试技术、Tips 等方面。 背景 一个高效的软件开发过程对软件开发人员来说是至关重要的,决定着开发是痛苦的挣扎,还是不断进步的喜悦。国人对软件蓝领的不屑,对繁琐冗长的传统开发过程的不耐,使大多数开发人员无所适从。最近兴起的一些软件开发过程相关的技术,提供一些比较高效、实用的软件过程开发方法。其中比较基础、关键的一个技术就是测试驱动开发(Test-Driven Development)。虽然TDD光大于极限编程,但测试驱动开发完全可以单独应用。下面就从开发人员使用的角度进行介绍,使开发人员用最少的代价尽快理解、掌握、应用这种技术。下面分优势,原理,过程,原则,测试技术,Tips等方面进行讨论。 1. 优势 TDD的基本思路就是通过测试来推动整个开发的进行。而测试驱动开发技术并不只是单纯的测试工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值