Chr*_*ris 11 c# design-patterns ioc-container
我正在查看Orchard CMS Project源代码,我注意到他们的一些构造函数从未验证所需参数不为null.起初,我觉得这很奇怪.我问自己,"考虑到你说这种依赖是必需的,你不想检查你确实有一个吗?" 意识到该项目使用Castle Windsor作为IoC容器,后来我想,"好吧,当它试图找到具有该要求的对象的依赖时,容器会抛出异常." 所以我的问题是,如果我知道IoC容器会检查我,我还应该检查吗?
或者是双重检查是好的,因为从某种意义上说,我坚持反向封装原则,说:"我不知道我是如何得到这种依赖,但我真的需要一个!"
我被引导遵循检查NULL的每个可见参数的做法,无论它是如何被设计为实例化的.总是有人会选择一个不同的IoC容器来强制执行更松散的类型委派策略,或者一些初级开发人员找到你的代码并希望它能以他们想要的方式工作.
无论哪种方式,比抱歉更安全.在这种情况下,当有人决定将其用作非预期时,最好花几秒钟守卫代码.