tdd – 伪码编程过程与测试驱动开发

对于没有阅读“代码完成2”的人,伪代码编程过程基本上是一种通过以简单的英文描述来设计例程的方法,然后逐渐将其修改为更详细的伪代码,最后是编码.这样做的主要好处是通过自上而下而不是自下而上建立系统来帮助您保持正确的抽象水平,从而在不同的层面上开发一个干净的API.我发现TDD在这方面效果较差,因为它太重视做最低限度的测试以通过并鼓励很少的前期设计.我还发现,必须为不稳定代码(代码不断被重构)维护一套单元测试是相当困难的,因为通常情况下,您只需要一到两次的例程来进行十几个单元测试.当您做重构时 – 更改方法签名,例如,您所做的大部分工作是更新测试而不是prod代码.我更喜欢在组件的代码稳定后添加单元测试.

我的问题是 – 那些尝试过这两种方法的人,你喜欢哪种方法

我的团队混合了两种方法,这是一个非常棒的开发方式(至少对我们来说).我们需要单元测试,因为我们有一个庞大而复杂的软件系统.但是,伪代码编程过程是我遇到的最好的软件设计方法.让他们一起工作:

>我们开始写我们的课,
并填写完整的评论
方法存根,输入和
输出.
>我们使用对编码和同行评审作为对话来完善和验证设计,但仍然使用方法存根.
>在这一点上,我们现在已经设计了我们的系统并且有一些可测试的代码.所以我们继续写下我们的单元测试.
>我们回去,开始填写方法,注释需要写入的逻辑.
>我们编写代码;测试通过.

它的优点是,当我们实际编写代码时,大部分的实现工作已经完成,因为我们认为实现的大部分实际上是代码设计.早期的过程代替了对UML的需求 – 类和方法存根只是一样描述,加上它将被实际使用.我们始终保持适当的抽象层次.

显然,这个过程从来没有像我所描述的那样非常直观 – 一些实现可能意味着我们需要重新考察高级设计.但是一般来说,当我们编写单元测试时,设计真的很稳定(在方法层面),所以不需要大量的测试重写.

相关文章

适配器模式将一个类的接口转换成客户期望的另一个接口,使得原本接口不兼容的类可以相互合作。
策略模式定义了一系列算法族,并封装在类中,它们之间可以互相替换,此模式让算法的变化独立于使用算法...
设计模式讲的是如何编写可扩展、可维护、可读的高质量代码,它是针对软件开发中经常遇到的一些设计问题...
模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,使得子类可以在不改变算法结...
迭代器模式提供了一种方法,用于遍历集合对象中的元素,而又不暴露其内部的细节。
外观模式又叫门面模式,它提供了一个统一的(高层)接口,用来访问子系统中的一群接口,使得子系统更容...