我一直认为从构造函数中调用类依赖项是一种不好的做法,但是昨天无法向同事说明原因。任何人都可以提供不这样做的充分理由吗?
答案 0 :(得分:6)
Nikola Malovic的4th law of IoC有几个原因:
请注意this rule是上下文的:它适用于使用Constructor Injection的服务。实体和值对象倾向于不使用DI,因此其构造函数受其他规则的约束。
答案 1 :(得分:3)
如果你调用你的依赖项,你实际上是在构造函数中工作。
从客户的角度来看是出乎意料的。当我做这样的事情时:
var myObj = new SomeClass();
我不指望任何副作用。
如果您在构造函数中执行某些操作,例如它可能会抛出异常,这肯定不是您所期望的。这就像命名方法FetchUsers
并在该方法中创建用户并返回它。不是你所期望的。