全局变量的命名空间

Namespace for global variables

本文关键字:命名空间 全局变量      更新时间:2023-10-16

我希望所有应用程序都可以访问变量。这种做法不好吗?如果是,为什么?

namespace Global
{
    SDL_Window* window;
    SDL_Renderer* renderer;
    UI* new_view;
}

另一个建议:

如何传递一个指针到全局变量类的构造函数,并保持它作为一个局部变量?

class A
{
    SDL_Renderer* m_renderer;
    A(SDL_Renderer* renderer);
} 
A::A(SDL_Renderer* renderer)
{
    m_renderer = renderer;
}

这种做法不好吗?

是的,使用全局变量是不好的做法,不管它们是否放在单独的命名空间中。

如果是,为什么?

它在系统模块之间引入了不必要的依赖关系。保持数据和行为本地化到类,负责做特定的事情。
在极少数情况下,单例是有意义的,但这些不应该是简单的全局变量,而是有一个静态成员(或自由)函数来访问它们。

是的,很糟糕。
好的部分:您解决了第一个不好的原因(使全局命名空间混乱),
但不要将自己的命名空间命名为"Global"。选择一些更独特的东西。
缺点:有更多的东西,比如创建不需要的依赖
(就像程序A部分不能工作,如果B部分不修改值)