В проекте мы пытаемся достичь соглашения об использовании пространства имен. Мы решили, что первый уровень будет "productName", а второй - "moduleName".
productName::moduleName
Теперь, если модуль является своего рода программным модулем, нет необходимости добавлять третье пространство имен. Например, чтобы добавить "str": productName:: utilityModuleName:: str - разделить пространство, в котором все связанные с "строками" вещи будут идти.
Если модуль является основным бизнес-модулем, у нас есть много возможностей и почти нет согласия.
Например
class productName::mainModuleName::DomainObject
и
class productName::mainModuleName::DomainObjectSomethingElseViewForExample
может быть как в
namespace productName::mainModuleName::domainObject
class Data
class ViewForExample
Почему мы должны создавать внутренние, а не частные классы, а не пространства имен? Почему мы должны создавать класс, где все методы являются статическими (за исключением случаев, когда этот класс будет параметром шаблона)?
Проект состоит из 1Gb исходного кода. Итак, что лучше всего разделить модули на пространства имен в С++?