TDD不算契约式设计,因为TDD是一种软件开发方法,DbC是一种设计思想,这两个概念本身不在一个维度上。但要说TDD里面涉及的一些思想,是有关联的。为何这么说?请继续往下看。
TDD提倡以终为始的思考方式,这个“终”就是你跟客户(业务方)定下的契约。而这个"契约"对双方的约束:
客户要按照之前商量好的规则来使用系统。你(系统)需要满足客户各种规则下的期望。客户很可能在规则之外行事(假设客户喜欢不按套路出牌),比如需求变更(C、R、U、D),那其实你跟客户的"契约"也发生了变化了,通常会尝试对新的需求达成一致后形成一套新的"契约"。
再往外延伸,你满足了客户这些业务需求后,特定时间内交付了系统,客户会支付你一笔劳动报酬,这也是契约,比如商务合同。
所以说,TDD中也浮现了契约的思想。参加过我的TDD训练营小伙伴应该都深有体会的一点是:Tasking(面向业务问题的拆分)是一个关键步骤,那么Tasking出来的Task,就可以类比成一个个小的契约:
Given:代表对的约束When:约定好的行为Then:对你(系统)的约束实例化一下:
Given 一个有空位的储物柜When 用户来存包Then 存包成功,并拿到一张票以上Task就是一个针对用户存包行为的契约,契约对双方的约束:
客户需要提供一个有空位的储物柜。你(系统)需要帮助用户存好包,并且返回一张票。 ---来自腾讯云社区的---袁慎建@ThoughtWorks
微信扫一扫打赏
支付宝扫一扫打赏