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