c++ - 实现文件中的命名空间以对 const 字符串文字进行分组 - 好/坏?

标签 c++ namespaces string

我已经将几个消息字符串分组到 .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/

相关文章:

c# - 修复 C# 中的命名空间冲突问题?

c++ - stringstream str 函数有什么问题?

c++ - 在不使用外部库的情况下在字符串中找到大整数的乘法,C++

c++ - 使用 oracle 的 OTT 实用程序时遇到问题

c++ - 在 switch case 语句中初始化数组

c++ - 在极值中初始化浮点变量

namespaces - “Lisp-1 vs Lisp-2”是否与具有静态类型的语言相关?

c++ - DLL中单例的销毁

delphi - Delphi 中的命名空间

c# - C# 中的修剪函数