微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我应该在哪里存储项目常量定义/声明

如何解决我应该在哪里存储项目常量定义/声明

我有一个项目,例如游戏应用程序。我在那里有很多课。那么,我应该在哪里存储游戏参数的初始变量声明/定义?

例如,我有一个“平面”,它具有初始参数 speedheight、e.t.c.
游戏开始后,这个参数以某种方式取决于游戏进程,并且改变时间参数我也应该存储在某个文件中。
其他类的情况相同,例如初始 score/fuel/health... 还有一些 constexpr 参数,例如每秒增加的分数。

那么,我应该在哪里存储所有这些参数?我对此有一些想法:

  1. 如果我将其存储在 Parameters.h 文件中,例如:
namespace WINDOW_ParaM {
    static const unsigned int WIDTH = 1000;
    static const unsigned int HEIGHT = 1000;
}
namespace PLANE_ParaM {
    static const char *TEXTURE_PATH = "../example.png";
}

那么我的编译时间就会过长。那是因为有些类包含这个文件,如果我测试了最佳参数,我会修改它,它会太长。

  1. 另一种方式 - 创建配置文件并以某种方式从中解析。这会减少编译时间并易于修改,但在架构案例中似乎很难,因为会有很多依赖项。
  2. 只需在每个类中声明每个常量。 - 修改时间太长,因为我应该打开 Plane.h - 修改,然后 Window.h .. e.t.c

大型项目游戏如何解决这个问题(这意味着他们正在测试/开发 - 应该减少构建并保持简单的架构)?像下面的答案一样使用 extern一个好习惯吗?

解决方法

您可以在标头中将变量声明为 extern,并有一个包含实际值的 .cpp

参数.h

namespace WINDOW_PARAM {
    extern const unsigned int WIDTH;
    extern const unsigned int HEIGHT;
}
namespace PLANE_PARAM {
    extern const char *TEXTURE_PATH;
}

参数.cpp

namespace WINDOW_PARAM {
    const unsigned int WIDTH = 1000;
    const unsigned int HEIGHT = 1000;
}
namespace PLANE_PARAM {
    const char *TEXTURE_PATH = "../example.png";
}

现在您可以在任何地方#include "Parameters.h"。更改 Parameters.cpp 中的值只会重新编译该文件。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。