gpt4 book ai didi

c# - 是否应该避免使用静态类,因为它会使依赖注入(inject)变得困难?

转载 作者:太空狗 更新时间:2023-10-29 18:28:27 25 4
gpt4 key购买 nike

负责创建一组“核心”库的人创建了一组静态类,提供各种实用程序,包括日志记录、审计和常见的数据库访问方法。

我个人认为这很糟糕,因为我们现在有一组难以测试的核心库,因为我无法模拟/ stub 这些类或对它们的构造函数进行任何注入(inject)。

我想我可以使用 TypeMock 将它们 stub ,但我宁愿免费这样做。

你怎么看?

编辑

如果您认为它们不难测试,能否举例说明如何测试它们。这些静态类实例化其他类型来执行它们的功能。

最佳答案

静态类(方法)不一定要避免,只要没有隐藏的依赖关系即可。当然,您可以将依赖项传递到静态方法中 - 它不应该存储在内部并修改以后调用的行为。
在这种情况下测试它们应该没有问题。

但我对你提到的案例也有不好的预感。我知道其中一些静态“包装器”实用程序类——在大多数情况下,它们真的很糟糕:)

编辑:
也许我应该澄清一下。我只会将静态类/方法用于非常小的特殊任务。当静态类开始初始化依赖项时,当然应该避免使用它们。如果您不能测试这些静态类,那么它们的工作量就太大了。

first answer of this question是你提到的反对静态类的论据。

关于c# - 是否应该避免使用静态类,因为它会使依赖注入(inject)变得困难?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/888639/

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