TDD 算不算契约式设计?

2020-04-09  本文已影响0人  袁慎建

关于题目中的契约式设计,推荐先阅读以下两篇故事汇:

TDD不算契约式设计,因为TDD是一种软件开发方法,DbC是一种设计思想,这两个概念本身不在一个维度上。但要说TDD里面涉及的一些思想,是有关联的。为何这么说?请继续往下看。

TDD提倡以终为始的思考方式,这个“终”就是你跟客户(业务方)定下的契约。而这个"契约"对双方的约束:

  1. 客户要按照之前商量好的规则来使用系统。
  2. 你(系统)需要满足客户各种规则下的期望。

客户很可能在规则之外行事(假设客户喜欢不按套路出牌),比如需求变更(C、R、U、D),那其实你跟客户的"契约"也发生了变化了,通常会尝试对新的需求达成一致后形成一套新的"契约"。

再往外延伸,你满足了客户这些业务需求后,特定时间内交付了系统,客户会支付你一笔劳动报酬,这也是契约,比如商务合同。

所以说,TDD中也浮现了契约的思想。参加过我的TDD训练营小伙伴应该都深有体会的一点是:Tasking(面向业务问题的拆分)是一个关键步骤,那么Tasking出来的Task,就可以类比成一个个小的契约:

实例化一下:

以上Task就是一个针对用户存包行为的契约,契约对双方的约束:

  1. 客户需要提供一个有空位的储物柜。
  2. 你(系统)需要帮助用户存好包,并且返回一张票。

我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2u3d25d0ch8gw

上一篇下一篇

猜你喜欢

热点阅读