c++ - 使用类来维护几个常量变量是个好主意吗

标签 c++ design-patterns

我遇到了一个日志记录机制的代码,其中根据严重性打印消息。 因此,如果严重性设置为 0,则打印 DEBUG 日志,如果设置为 1000,则仅打印 INFO 日志等。

class Logs
{
public:
    static const int DEBUG=0;
    static const int INFO=1000;
    static const int SOMETHING_ELSE=2000;
}

类里面就是这样。没有其他的。 并且不是按原样使用值,而是使用变量。 示例:如果我想将严重性传递给某个辅助函数,那么它传递 Logs::INFO.

而不是传递 1000 作为其参数

我的问题是,为什么我们真的需要一个类来定义这些常量变量。 我们也可以使用枚举。或宏。或者 const 全局变量。或命名空间内的 const 变量。但为什么要上课?与我提到的其他选项相比,使用类有什么优势吗?

是否只是选择使用一个而不是另一个的问题,还是一个比其他有具体优势?

最佳答案

We could have used enums as well.

那将是我的第一选择,一个定义在 Log 范围内的 enum

Or Macros.

绝对不是。由于许多原因,宏不如整数变量。

Or const global variables.

没有宏那么糟糕,但它们不应该是首选。

Or const variables inside namespaces.

这也是一种可能性。即使在这里,我也建议使用 enum

But why classes?

在类范围或命名空间范围内定义的枚举或整数常量之间的选择对我来说并不总是很清楚。你必须根据这些数字代表什么来做出判断。在这种情况下,我觉得可以使用:

class Logs
{
   public:
    enum MessageType {DEBUG=0, INFO=1000, SOMETHING_ELSE=2000};
}

关于c++ - 使用类来维护几个常量变量是个好主意吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35169078/

相关文章:

c++ - 什么是 C++ 中的引用变量?

language-agnostic - 异步加载/错误处理

c++ - 如何使用 C 反转字符串?

c++ - 计数直角三角形 : how to improve Time Complexity?

variables - 在 awk 中使用变量初始化正则表达式

java - Collection可以用作Hashmap java中的键吗?

javascript - 将显示模块模式代码转换为模块模式

asp.net - 什么时候应该使用 session-per-request 模式

c++ - 在类中初始化 ofstream

c++ - 我有链接或编译错误