美文网首页
TDD 算不算契约式设计?

TDD 算不算契约式设计?

作者: 袁慎建 | 来源:发表于2020-04-09 20:00 被阅读0次

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

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

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

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

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

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

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

    • Given:代表对的约束
    • When:约定好的行为
    • Then:对你(系统)的约束

    实例化一下:

    • Given 一个有空位的储物柜
    • When 用户来存包
    • Then 存包成功,并拿到一张票

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

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

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

    相关文章

      网友评论

          本文标题:TDD 算不算契约式设计?

          本文链接:https://www.haomeiwen.com/subject/wrehmhtx.html