我应该在哪里存储项目常量 definition/declaration
Where should I store project constants definition/declaration
我有一个项目,例如游戏应用程序。我有很多 classes 在那里。那么,我应该在哪里存储游戏参数的初始变量declaration/definition?
例如,我有一个'plane',它有初始参数speed
、height
、e.t.c.
游戏开始后,此参数在某种程度上取决于游戏进程,并且及时更改参数我也应该存储在一些文件中。
与另一个 classes 相同的情况,例如初始 score
/fuel
/health
...
还有一些 constexpr
参数,例如每秒增加的分数数量。
那么,我应该将所有这些参数存储在哪里?我对此有一些想法:
- 如果我将其存储在
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";
}
那我的编译时间就太长了。那是因为一些 classes 包含这个文件,如果我测试 best-parameters 我会修改它,它会太长。
- 另一种方法 - 创建配置文件并以某种方式从中解析。这将减少编译时间并且易于修改,但在架构情况下似乎很难,因为会有很多依赖关系。
- 只需在每个 class 中声明每个常量即可。 - 修改时间太长,因为我应该打开
Plane.h
- 修改,然后 Window.h
.. e.t.c
大型项目游戏如何解决这个问题(这意味着它们是 testing/developed - 应该少构建并保持简单的架构)?在下面的答案中使用 extern
是个好习惯吗?
您可以在 header 中将变量声明为 extern
,并使 .cpp
具有实际值。
Parameters.h
namespace WINDOW_PARAM {
extern const unsigned int WIDTH;
extern const unsigned int HEIGHT;
}
namespace PLANE_PARAM {
extern const char *TEXTURE_PATH;
}
Parameters.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
中的值只会重新编译该文件。
我有一个项目,例如游戏应用程序。我有很多 classes 在那里。那么,我应该在哪里存储游戏参数的初始变量declaration/definition?
例如,我有一个'plane',它有初始参数speed
、height
、e.t.c.
游戏开始后,此参数在某种程度上取决于游戏进程,并且及时更改参数我也应该存储在一些文件中。
与另一个 classes 相同的情况,例如初始 score
/fuel
/health
...
还有一些 constexpr
参数,例如每秒增加的分数数量。
那么,我应该将所有这些参数存储在哪里?我对此有一些想法:
- 如果我将其存储在
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";
}
那我的编译时间就太长了。那是因为一些 classes 包含这个文件,如果我测试 best-parameters 我会修改它,它会太长。
- 另一种方法 - 创建配置文件并以某种方式从中解析。这将减少编译时间并且易于修改,但在架构情况下似乎很难,因为会有很多依赖关系。
- 只需在每个 class 中声明每个常量即可。 - 修改时间太长,因为我应该打开
Plane.h
- 修改,然后Window.h
.. e.t.c
大型项目游戏如何解决这个问题(这意味着它们是 testing/developed - 应该少构建并保持简单的架构)?在下面的答案中使用 extern
是个好习惯吗?
您可以在 header 中将变量声明为 extern
,并使 .cpp
具有实际值。
Parameters.h
namespace WINDOW_PARAM {
extern const unsigned int WIDTH;
extern const unsigned int HEIGHT;
}
namespace PLANE_PARAM {
extern const char *TEXTURE_PATH;
}
Parameters.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
中的值只会重新编译该文件。