При использовании вложенных пространств имен иногда полностью определенные имена оказываются довольно длинными. Я знаю, что могу использовать 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
, короткие версии пространства имен были легко доступны.
Это хороший подход для этого? Есть ли другой лучший способ?
Я нашел несколько вопросов о пространствах имен C++ в SO (, например, 1 и 2 )., но ни один из них не относится к тому, как решить проблему переименования пространства имен в рамках проекта -.
РЕДАКТИРОВАТЬ:Кроме того, такой механизм можно использовать для систематического переименования длинных пространств имен (, таких как пространства Boost ), для всего проекта. Например, я обычно переименовываю некоторые пространства имен, такие как:
namespace ip = boost::asio::ip;
namespace ptime = boost::posix_time;
В настоящее время я делаю это на единицу перевода -,но я хотел бы сделать это, используя глобальный подход для всего проекта.