constructor - 干净的代码 - 依赖注入(inject)

标签 constructor dependency-injection arguments code-cleanup

我想知道是否有一个“更干净”的解决方案来使用依赖注入(inject)绑定(bind)到具有很多参数的类,因为根据 Robert C.Martin 的清洁代码,最好不要使用超过 3 个参数......任何其他解决方案,想法(和例子?)

最佳答案

Dependency Injection != Lot of arguments

您将使用的参数数量取决于您的个人代码设计,使用 DI,您专注于实现某些目标所需的依赖项,即使您没有按照“依赖注入(inject)/IoC 模式”。如果你有太多的争论,你可能不得不以某种方式重新考虑你的设计。

如果您有疑问,请考虑可维护性。

“如果我必须改变一些东西,它会在哪里?如果我做了那个改变,还有多少其他地方会被改变所触动?”

有可能的解决方法,只是说几个:
  • 将 2 个或多个依赖项包装为新依赖项(当您需要多个依赖项时,您可能不需要这些依赖项的整个 API,因此您可以将其中的一部分隐藏在新接口(interface)后面。)
  • 正如Spock所说,您可以创建一个“参数”对象(留给您的实现:参数列表或对象结构)。

  • 还取决于您的编程语言,您可能会发现某些解决方案比其他解决方案更有用(选项 1 可能更适合 C++ 等语言,其中每个依赖项都会大量增加编译时间,而选项 2 似乎可能与 PHP 等语言一起使用因为需要更少的编码和用户的努力)。

    关于constructor - 干净的代码 - 依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25995768/

    相关文章:

    c - 尝试使用 getopt 解析 c 中的输入

    javascript - JavaScript 中的构造函数

    dependency-injection - Gradle:如何将任务依赖注入(inject)到插件定义的任务中?

    c++ - 在 C++ 的类构造函数中初始化结构数组

    java - 不同版本的依赖支持 :design

    oop - 混合基于构造函数和基于 setter 的注入(inject)是一件坏事吗?

    va_arg 中的字符类型

    javascript - 在 python 中解析 JavaScript 参数值

    c++ - 使用 default 关键字指定的构造函数是否微不足道?

    c++ - 编译器是否每次都实例化默认构造函数和复制构造函数以及复制赋值运算符?