Dependency injection 除了TDD之外,松散耦合代码还有其他好处吗?

Dependency injection 除了TDD之外,松散耦合代码还有其他好处吗?,dependency-injection,loose-coupling,Dependency Injection,Loose Coupling,当我在做TDD时,它迫使我采用原则,最终我得到了松散耦合的代码 我被告知很难理解具有松散耦合代码的应用程序 您能告诉我松散耦合代码的优缺点吗?另一个好处是,当您有多个实现时,能够更轻松地替换组件 假设您有一个购物车系统,它通常存储和读取数据库,这是默认设置。但是您可以进行注入,以便它使用后端,这不是很好,但在没有数据库的情况下它可以工作。因为它是松散耦合的,所以它是高度可变的。这就是重点。如果您不需要,松耦合可能会引入许多间接操作,从而使系统具有更高的“深度”:您需要向下查看一个级别以查看所有发

当我在做TDD时,它迫使我采用原则,最终我得到了松散耦合的代码

我被告知很难理解具有松散耦合代码的应用程序


您能告诉我松散耦合代码的优缺点吗?

另一个好处是,当您有多个实现时,能够更轻松地替换组件


假设您有一个购物车系统,它通常存储和读取数据库,这是默认设置。但是您可以进行注入,以便它使用后端,这不是很好,但在没有数据库的情况下它可以工作。

因为它是松散耦合的,所以它是高度可变的。这就是重点。如果您不需要,松耦合可能会引入许多间接操作,从而使系统具有更高的“深度”:您需要向下查看一个级别以查看所有发生的情况。

最大的优点是,对一个模块进行更改不会以不可预知的方式破坏其他模块。

如您所说,松散耦合代码的缺点是增加了复杂性,并且很难理解。当代码松散耦合时,通常无法立即看出它做了什么

正如其他人所说:好处是,当代码/模块/对象/组件的其他部分彼此不依赖时,交换它们就容易多了


与所有OO设计一样,您必须进行权衡——对于您来说,拥有易于交换的高度模块化代码是否更重要?还是更重要的是要有更简单易懂的代码?您必须做出决定。

重用、可扩展性和减少副作用。

依赖注入不会自动导致低耦合。我同意上面关于低耦合优点的回答。依赖项注入的主要好处是它提高了可测试性,并帮助您遵循程序到接口(而不是实现)的GoF原则。但是,您也可以与注入的依赖项具有高度耦合