我正在创建一个全局静态对象,它将在整个应用程序中使用。我将在delegates / threads中使用成员函数。这种方法有潜在的缺陷吗?
答案 0 :(得分:5)
如果对象不包含可变状态,则可以没问题。我喜欢使用无副作用的静态函数。 (模仿者可能会不同意这一点,因为你不能像接口函数一样容易地模拟静态函数。)
但全球可变状态是邪恶的。你可以找到很多关于全局变量问题的文章(以及它们的其他形式,如单例,静态字段......)。
如果你真的需要某种全球状态,请不要在考虑这个假设的情况下编写你的程序。而是让DependencyInjection将一个比全局状态对象的实例注入到其他对象中。这样,您可以在需要时轻松切换到多个实例。例如,在运行测试时,它确实非常有用。