Единый подход к переименованию пространств имен в C++

При использовании вложенных пространств имен иногда полностью определенные имена оказываются довольно длинными. Я знаю, что могу использовать 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;

В настоящее время я делаю это на единицу перевода -,но я хотел бы сделать это, используя глобальный подход для всего проекта.

19
задан Community 23 May 2017 в 11:56
поделиться