Dependency injection 依赖注入只是为了测试还是生产?

Dependency injection 依赖注入只是为了测试还是生产?,dependency-injection,Dependency Injection,依赖注入框架是仅用于测试还是用于生产代码?似乎一旦你开始使用ninject这样的框架,你就不会想把所有的事情都颠倒过来。另外,使用ninject这样的东西会影响性能吗?您肯定会在生产环境中使用DI。在一个测试环境中,为了测试的目的,只需要连接一些东西是可以的,事实上,如果您使用的是模拟对象,您可能需要自己连接这些类。您肯定在生产环境中使用DI。在一个测试环境中,为了测试的目的,只需要连接一些东西是可以的,事实上,如果您使用的是模拟对象,您可能需要自己连接这些类。一切都使用它!为什么要倒过来?质量

依赖注入框架是仅用于测试还是用于生产代码?似乎一旦你开始使用ninject这样的框架,你就不会想把所有的事情都颠倒过来。另外,使用ninject这样的东西会影响性能吗?

您肯定会在生产环境中使用DI。在一个测试环境中,为了测试的目的,只需要连接一些东西是可以的,事实上,如果您使用的是模拟对象,您可能需要自己连接这些类。

您肯定在生产环境中使用DI。在一个测试环境中,为了测试的目的,只需要连接一些东西是可以的,事实上,如果您使用的是模拟对象,您可能需要自己连接这些类。

一切都使用它!为什么要倒过来?质量框架的性能影响应该只发生在启动时。另外,在虚拟机可以内联额外的层之前,可能会有一个较小的惩罚。无论哪种方式,您都可以看到bug的减少和开发人员生产力的提高

DI对于生产来说特别好。在我们的软件中,我们在生产中使用与在测试中完全相同的配置

当测试运行时,测试配置只是将某些服务标记为模拟。这意味着测试配置为:

  • 列出模拟服务
  • 为模拟服务方法上的各种方法调用指定返回值
  • 测试好处:

  • 生产和测试之间没有配置差异意味着不可能存在潜在的配置相关错误
  • 服务也被注入到测试类中
  • 测试配置很简单(仅在模拟服务的情况下才需要)
  • 测试配置始终与生产配置相同。(易于维护)
  • 服务初始化从来都不是手工操作的,也不是黑客操作的
  • 生产效益:

  • 清洁启动代码-无硬编码依赖项
  • 循环依赖不是问题
  • 能够“关闭”服务的本地副本并将请求路由到不同的框。(用于后台批处理任务)

  • 一切都要用它!为什么要倒过来?质量框架的性能影响应该只发生在启动时。另外,在虚拟机可以内联额外的层之前,可能会有一个较小的惩罚。无论哪种方式,您都可以看到bug的减少和开发人员生产力的提高

    DI对于生产来说特别好。在我们的软件中,我们在生产中使用与在测试中完全相同的配置

    当测试运行时,测试配置只是将某些服务标记为模拟。这意味着测试配置为:

  • 列出模拟服务
  • 为模拟服务方法上的各种方法调用指定返回值
  • 测试好处:

  • 生产和测试之间没有配置差异意味着不可能存在潜在的配置相关错误
  • 服务也被注入到测试类中
  • 测试配置很简单(仅在模拟服务的情况下才需要)
  • 测试配置始终与生产配置相同。(易于维护)
  • 服务初始化从来都不是手工操作的,也不是黑客操作的
  • 生产效益:

  • 清洁启动代码-无硬编码依赖项
  • 循环依赖不是问题
  • 能够“关闭”服务的本地副本并将请求路由到不同的框。(用于后台批处理任务)

  • 依赖注入是一种架构模式,而不是测试模式。因此,它打算在构建生产代码时使用。事实上,一个非常好的框架引入了非常小的开销(如果有的话)。不能确定ninject或unity是否是这样,我曾经实现过我自己的


    DI可能真正的缺点主要是编码过程,而不是生产性能。应该提到的一点是:当使用DI时,您失去了使用“转到定义”遍历代码的能力—它总是将您带到非常符合逻辑但仍然无法使用的接口。

    依赖注入是一种架构模式,而不是测试模式。因此,它打算在构建生产代码时使用。事实上,一个非常好的框架引入了非常小的开销(如果有的话)。不能确定ninject或unity是否是这样,我曾经实现过我自己的


    DI可能真正的缺点主要是编码过程,而不是生产性能。应该提到的一点是:当使用DI时,您失去了使用“转到定义”遍历代码的能力—它总是将您带到一个逻辑性很强但仍然无法使用的界面。

    安装ReSharper并按ctrl-alt-b而不是“转到定义”,安装ReSharper并按ctrl-alt-b而不是“转到定义”。