C# 编写可靠的应用程序最有力的理由是什么?

C# 编写可靠的应用程序最有力的理由是什么?,c#,dependency-injection,ioc-container,solid-principles,C#,Dependency Injection,Ioc Container,Solid Principles,最近我做了一个关于依赖注入和IoC(控制反转)容器的演示。 我还谈到了坚实的原则。我认为没有固体,DI容器是没有意义的 我把注意力集中在几个论点上 维修性 可伸缩性 可测试性 然而,当技术小组回答说他们看不到使用容器等进行DI的意义时,我有点失望 我承认演讲可能并不完美,信息也没有被理解 有谁能告诉我如何说服观众依赖注入是一件好事吗。如何说服他们改变对松散耦合类和组件的思维方式(我们也对此进行了一些讨论) DI的“杀手”论据是什么?这不适合这么说。对于DI没有致命的争论,因为DI基本上是个坏主意

最近我做了一个关于依赖注入和IoC(控制反转)容器的演示。 我还谈到了坚实的原则。我认为没有固体,DI容器是没有意义的

我把注意力集中在几个论点上

  • 维修性
  • 可伸缩性
  • 可测试性
  • 然而,当技术小组回答说他们看不到使用容器等进行DI的意义时,我有点失望

    我承认演讲可能并不完美,信息也没有被理解

    有谁能告诉我如何说服观众依赖注入是一件好事吗。如何说服他们改变对松散耦合类和组件的思维方式(我们也对此进行了一些讨论)


    DI的“杀手”论据是什么?

    这不适合这么说。对于DI没有致命的争论,因为DI基本上是个坏主意。DI的思想是,获取类的实现细节,然后允许类的用户确定这些实现细节。这意味着类的作者不再控制类的正确性、性能或可靠性;该控件交给了调用方,调用方对类的内部实现细节了解不够,无法做出正确的选择。@EricLippert:不幸的是,在您的位置上有人持这种观点。您的观点显然来自编写可重用库甚至编译器,而不是编写LOB应用程序。对于可重用库,其他规则适用。在stackoverflow这里已经写了很多关于依赖注入在stackoverflow的使用和重要性的文章。你有没有考虑过在.NET中阅读马克·希曼的《依赖注入》一书?你真的应该这么做。@EricLippert说DI基本上是一个坏主意,与说类应该总是被密封等一样缺乏细微差别。最终,这是一种平衡。诚然,您提到的DI的缺点在某种程度上是真实的。然而,它们与继承的缺点完全相同。如果我们接受继承和DI都是一个坏主意的观点,那么就不再存在任何多态性。然后OOP从窗口消失了。FP也是如此,因为FP是基于函数的组合性(也是多态性)。那么,除了程序性编程还有什么别的吗?@MarkSeemann:这不是一个进行讨论的好论坛,所以也许我不应该对最初的帖子做出挑衅性的回应。我同意我的500字评论完全没有细微差别。基本上,我的论点是,低可靠性比低可配置性是一个更大的问题。(我提出99%的类应该被密封,并且密封应该是默认的;我不太喜欢通过继承重用。我会这样做,但经验表明,这并不是OOP真正的信徒认为的万能药。)@EricLippert我认为支持DI的主要论点是解耦,不是为了可配置性,而是为了可测试性。从这个意义上讲,DI通过允许您轻松构建测试用例而不必考虑整个依赖关系图,从而精确地提高了可靠性。