gpt4 book ai didi

api - TDD:它会妨碍良好的 API 设计吗?

转载 作者:行者123 更新时间:2023-12-03 06:17:31 25 4
gpt4 key购买 nike

我从未编写过 TDD 代码,但我在 SO 上看到了大量关于它的讨论。我对此最大的担忧是,似乎一般良好的 API 设计(为了灵 active 、易用性、界面简单性和性能)有时会让代码变得可模拟、超模块化,超出任何 API 使用所需例如,TDD 支持者经常建议将事物作为参数传递,从 API 抽象的角度来看,被调用的方法应该“只是知道”,或者以一种使测试变得容易的方式来分解类和方法,这不一定是与问题域最相关的方式。

对于在 TDD 和 API 设计方面更有经验的人:您是否发现 TDD 经常妨碍良好的 API 设计?如果是这样,您如何应对?

最佳答案

不,我发现 TDD 通常鼓励良好的设计。易于测试的东西通常也很容易在生产中使用......因为当提出测试时,你会想,“接下来我想做什么?”然后让它发挥作用。

在练习 TDD 时,您被迫思考 API 的“用例”,程序员将如何使用类/方法,最终您将得到一个非常有用的框架。如果您必须创建一百个 FooFactoryBarAuthenticator,或者 API 正变得像您所说的“超模块化”,您可能会在编写测试时注意到这一点编写代码并思考如何简化它。

至于参数和依赖注入(inject) - 我通常发现使用 TDD 依赖关系变得更加清晰。它们通常是构造函数参数而不是方法参数,但明确 API 实现需要验证器、随机源等对于理解它正在做什么很有用。您可以确定代码不会访问网络或远程数据库,因为它在实现中隐藏了这些内容。这些隐藏的细节使得 API 难以在测试环境中使用。

请注意,当依赖项是构造函数调用的一部分时,它不是类可能实现的接口(interface)的一部分 - 接口(interface)内的依赖项通常是隐藏的,但 TDD 意味着实现将它们暴露在一个显而易见的方法。

有关依赖注入(inject)和 TDD 的良好信息来源可以在 Google Testing Blog 上找到。 。特别关注Miško Hevery的帖子或者在 Youtube 上观看他的一些视频:Don't Look For Thingsmore .

关于api - TDD:它会妨碍良好的 API 设计吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1867911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com