我正在查看 Orchard CMS 项目的源代码,我注意到他们的一些构造函数从未验证所需的参数不为空。起初,我认为这很奇怪。我问自己,“考虑到你说这个依赖是必需的,你不想检查你是否真的有一个吗?” 意识到该项目使用 Castle Windsor 作为 IoC 容器,我后来想,“好吧,当容器试图找到具有需求的对象的依赖项时,它会抛出异常。” 所以我的问题是,当我知道 IoC 容器会为我检查时,我还应该检查吗?
或者双重检查是好的,因为从某种意义上说,我坚持反向封装原则:“我不知道我是如何获得这种依赖关系的,但我真的需要一个!”