2

当开始一个新的应用程序时,您宁愿只使用现有的依赖框架并冒可能出现的缺点,还是选择编写自己的完全适应的框架,为什么?

4

7 回答 7

15

IMO,我们的工作是解决客户的问题,而不是编写依赖注入(或日志记录,或 ORM 等)框架。我认为,当存在合适的框架时,您应该始终使用该框架。

除此之外,如果该框架是开源的,那么没有理由不使用它,因为您可以修复任何可能的缺点。

我认为我们经常失去目标的位置。作为程序员,我们倾向于专注于有趣的问题(例如编写依赖注入框架)并拖延无聊的问题(为客户端编写另一个 CRUD 应用程序。):D

于 2009-01-27T20:16:33.910 回答
5

我认为现在的 DI 框架非常可靠(至少对于 .Net 而言)......为什么要花那么多时间重新发明轮子

于 2009-01-27T20:16:34.097 回答
2

最初,做一个 DI 框架似乎不是一项大任务,但如果你看看 Castle 和 Spring.NET 等框架提供了哪些框架,我可以想出更好的方式来消磨时间。除非您需要真正特别的东西,否则我会采用其中一种可用的框架并利用其他人的工作。

于 2009-01-27T20:24:27.450 回答
1

我当然会使用其中一种可用的解决方案。虽然一开始很简单,但在全功能 DI 框架中,有一些功能(如各种代理功能)绝对不简单。也许你也想要一些 AOP?

但是任何体面的 DI 框架都应该对您编写实际代码的方式影响不大,因此可以争辩说它对您的代码没有那么重要。

不过,这对支付费用的人来说可能很重要。在您的情况下,我将获得一个带有可用源代码的 DI 框架,并了解源代码而不是编写您自己的源代码。

于 2009-01-27T20:23:19.153 回答
1

DI 框架一直在发展,它们也增加了功能,例如使您的代码更易于测试。随着项目的发展,编写自己的代码会更容易出错并且可能会更复杂。

如果您需要 DI,我会说使用它们并选择一个具有良好支持的。

于 2009-01-27T22:38:51.860 回答
0

选项 3:不要使用依赖注入(暂时)。

你刚刚开始一个新项目。你真的需要一个 DI 框架吗?

开始开发项目,您可能会开始看到一些有问题的依赖项。一旦它们开始出现,您就可以评估现有的 DI 框架并决定哪些是合适的。

谁知道呢,你可能会发现你根本不需要 DI 框架。

甚至马丁福​​勒也说:

控制反转是框架的一个共同特征,但它是有代价的。当您尝试调试时,它往往难以理解并导致问题。所以总的来说,除非我需要它,否则我宁愿避免它。这并不是说这是一件坏事,只是我认为它需要证明自己比更直接的选择更合理。

http://martinfowler.com/articles/injection.html

如果我是你,我会避免使用任何依赖注入,直到你绝对不能没有它。

请记住,在大多数情况下,YAGNI

于 2009-01-27T22:20:04.690 回答
0

您可以围绕依赖注入位编写一个包装器,因此如果您想稍后切换 DI 框架,则无需担心库依赖关系或在任何地方更改代码。比如不直接调用container.Resolve,写一个工厂类,为你调用container.Resolve,只调用到工厂类。

于 2009-01-28T06:41:58.297 回答