gpt4 book ai didi

c++ - 什么是全局状态?它们如何影响可测试性以及如何避免它们?

转载 作者:太空狗 更新时间:2023-10-29 20:18:13 24 4
gpt4 key购买 nike

列出各种全局状态,如全局变量、单例对象等,

我读到它们会影响代码的可测试性。您能否解释有助于提高代码可测试性的全局状态的替代方案?

最佳答案

从可测试性的角度来看,全局变量和单例非常相似,因此不必单独对待。好的 OO 设计应该像乐高积木一样,可以组合在一起创建最终的系统。全局变量的主要问题是你失去了隔离。当您使用全局变量或单例变量访问您的协作者时,这些类不再是单独的砖 block ,您可以轻松获取和重组、单独使用或在另一个项目中重用。当您使用某些依赖于全局变量的类时,您会将设计的其余部分与它一起拖动。在测试中这会产生问题,因为您必须采取额外的步骤来切断您的类(class)与其合作者之间的联系,以便您可以单独对其进行测试。 (我在我的博客上写了 more about this。)

该问题的一个很好的解决方案是从外部提供类依赖项。您只需引入某种机制(可能是一个简单的类),它将获取所有孤立的积木并将它们连接到构成您的应用程序的对象图中。这就是控制反转和依赖注入(inject)的全部内容。

关于c++ - 什么是全局状态?它们如何影响可测试性以及如何避免它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4734735/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com