在使用嵌套命名空间时,有时完全限定名称会变得相当长。我知道可以使用namespace abc = aaa::bbb::ccc
来减少键入量(这也可能在某些情况下提高可读性)。
然而,我不确定在整个项目中实现此重命名的最佳方法是什么。直接的方法(即按使用基础重命名长命名空间)可能会导致在不同文件中为相同的完全限定名称使用不同的短名称。因此,我考虑采用更一致的方法来完成此操作。
例如,假设像这样:
project
|- client
| |- core
| |- plugin
| |- util
|- server
...
我打算为每个目录创建一个包含缩短名称的头文件。例如,project/client/core/core.h
将包含 namespace pr_cl_core = project::client::core
(我知道这个简短名称的示例比较差,但在实际项目中,它们更有意义)。然后,我会将 core.h
包含到 project/client/core
中所有头文件中,以便在包含该目录下的头文件时,例如在 project/client/plugin/plugin_foo.h
中,可以立即使用缩短的命名空间版本。这是一种好的做法吗?还有其他更好的方法吗?
我在SO上找到了一些关于C++命名空间的问题(例如1和 2),但没有一个与如何以项目范围的方式解决命名空间重命名相关。
编辑:此外,这样的机制可以用于对整个项目进行长命名空间的系统重命名(例如 Boost 的命名空间)。例如,我通常会将一些命名空间重命名为:
namespace ip = boost::asio::ip;
namespace ptime = boost::posix_time;
目前我是在每个翻译单元上这样做,但我希望能够使用全局方法来处理整个项目。
pcc
而不是像pr_cl_core
这样笨重的名称,或者只是使用using project::client::core::OneClass;
,而其他人则会争论最佳的命名方式(匈牙利命名法?)。因此,这个问题过于争议性,无法建设性地讨论。 - Matthieu M.pcc
vs.pr_cl_core
),而是如何在整个项目中实现这样的重命名。这并不是主观的。可能有几种解决方案,但在我看来,这是一个明确的目标。 - betabandido