我已经将几个消息字符串分组到 .cpp 文件中的一个命名(非匿名)命名空间中,用于类处理输出,如下面的代码所示:
namespace Messages
{
static const std::string AppTitle = "The Widgetizer - Serving all your Widget needs";
static const std::string SuccessMsg = "Great success! Widgets for all! ";
static const std::string FailMsg = "No widgets for you!";
};
void Display::printTitle()
{
out << Messages::AppTitle << std::endl;
}
void Display::printSuccessMsg()
{
out << Messages::SuccessMsg << std::endl;
}
void Display::printFailMsg()
{
out << Messages::FailMsg << std::endl;
}
我的逻辑是这样他们都在一个中心位置,在一个具有有意义和 self 记录名称的命名空间下,并且他们不会暴露给客户端代码(如果我把.h 文件中的命名空间)。
这通常是一种好的做法,还是存在我没有看到的缺陷?
如果它们位于这样的文件范围命名空间中,是否需要 static 关键字?
就最佳实践和公认的 C++ 习惯用法和风格而言,将其作为匿名命名空间会更好吗?或者只是作为 static const 类成员?
我承认这对于我正在编写的小程序来说可能有点矫枉过正,因为它们可能只会在这些函数中使用,但一般来说,不硬编码消息字符串是一个好习惯,不是吗?
最佳答案
我想没关系,你不会因此失去任何分数。我不太关心“最佳实践”这个词,这不是一种常见的做法。许多程序在编写时都考虑到了本地化,有数十亿潜在客户听不懂一个英语单词。没有标准的 C++ 解决方案,只是您平台上的常见做法。比如字符串资源。
关于c++ - 实现文件中的命名空间以对 const 字符串文字进行分组 - 好/坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3461444/