При использовании вложенных пространств имен иногда полностью квалифицированные имена заканчиваются довольно длинными. Я знаю, что я могу использовать 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 (например, 1 и 2), но ни одна из них не связана с тем, как разрешать переименование пространства имен в рамках всего проекта.
EDIT: Кроме того, такой механизм можно использовать для систематического переименования длинных пространств имен (например, Boost) для всего проекта. Например, я обычно переименовываю некоторые пространства имен, например:
namespace ip = boost::asio::ip;
namespace ptime = boost::posix_time;
В настоящее время я делаю это для каждой единицы перевода, но я хотел бы сделать это, используя глобальный подход для всего проекта.