Я работаю над проектом, где смесь C# (95%) и C++ / CLI (5%) используется.
Соглашение о присвоении имен пространства имен, к которому я стремлюсь, является старым добрым Company.Technology.Etc.
. Это работает превосходное на C#. Теперь, я могу нести это через к классам C++? Я читал здесь, что составные пространства имен не поддерживаются в C++.
Застревают я с неуклюжим
namespace Company {
namespace Technology {
namespace Etc {
...
}
}
}
для пребывания последовательным?
Действительно ли стоит попытаться остаться последовательным?
Да, вы застряли с этим, посмотрите эту ссылку . На мой взгляд, стоит использовать его как более читабельным и управляемым является использование пространств имен. Обычно я делаю это и на родном C ++.
Arg! Мы сделали это и здесь для некоторого кода. Я ненавижу это.
Есть ли здесь серьезная путаница в том, кто подписывает ваши чеки? Что произойдет, когда Компания
будет куплена OtherCorp
, или отдел маркетинга решит, что Technology
впредь будет называться eTech
? Сколько кода нужно будет изменить?
Как правило, я против. Но в подобных ситуациях, когда пространства имен, вероятно, никогда не должны были создаваться изначально, и вы просто сохраняете себе будущие изменения кода, я рекомендую следующую строку вместо того, чтобы наклеивать эту огромную бородавку перед каждой ссылкой:
using Company :: Technology;
Пространства имен, как правило, следует создавать, когда у вас есть несколько связанных классов и объектов, которым вы хотите присвоить одно и то же имя в их идентификаторах. Таким образом, вместо того, чтобы называть их foo_operation
и foo_class
, вы выполняете foo :: operation
и foo :: class
.
Чтобы определить типы во вложенном пространстве имен, да, вы должны сделать это так, как вы описываете.
Но для используйте типы, попробуйте
пространство имен CTE = Company :: Technology :: Etc;
, тогда вы сможете выполнить, например, CTE: : SomeClass someClass;