知识卡片

注入也有成本

普通读书笔记卡 · 1712.d

内容

依赖注入能替换真实依赖、隔离测试对象,但也可能暴露实现细节并增加调用负担。发散:不要为了测试方便把内部结构随意交给客户端,先判断依赖是否真的不可信或难控制。

参考来源

- 位置:《你真的会写代码吗-2021》第6章《别对我撒谎:通过测试保证可靠性》"6.3.2 可观察性"附近关于依赖注入的讨论(源文件:_epub-src/OEBPS/Text/0016.xhtml) - 结论依据:原文明确依赖注入"暴露了Container类的一个实现细节,违反了封装。它不仅向客户端展示了新的容器需要一个set,甚至让客户端选择使用什么样的set……这是依赖注入的一种常见问题:必须在提高可测试性和降低封装之间权衡"。 - 原始内容:在存在依赖性的情况下,提高可测试性的一个常见方法是采用依赖注入(dependency injection)……它暴露了Container类的一个实现细节,违反了封装。它不仅向客户端展示了新的容器需要一个set,甚至让客户端选择使用什么样的set!……这是依赖注入的一种常见问题:必须在提高可测试性和降低封装之间权衡。