В настоящее время я нахожусь в процессе разработки довольно большой статической библиотеки, которая будет использоваться некоторыми инструментами после ее завершения.Теперь, поскольку этот проект несколько больше, чем все, чем я занимался до сих пор, я понял, что пришло время подумать о хорошей структуре для проекта.Использование пространств имен является одним из таких логических шагов.
Мой текущий подход состоит в том, чтобы разделить библиотеку на части (которые не являются автономными, но их назначение требует такого разделения).У меня есть «базовая» часть, которая теперь содержит некоторые очень распространенные определения типов и константы (используемые многими различными частями библиотеки).Другими частями являются, например, некоторые утилиты (хэш и т. Д.), Файловый ввод-вывод и т. Д.Каждая из этих частей имеет свое собственное пространство имен.Я почти закончил раздел «Утилиты» и понял, что мой подход, вероятно, не самый лучший.Проблема (если мы хотим назвать это так) состоит в том, что в пространстве имен 'utils' мне нужно что-то из пространства имен 'core', в результате чего включаются файлы заголовков core и многие директивы using.
Итак, я началдумать, что это, вероятно, нехорошая вещь и должна быть как-то изменена.Моя первая идея - использовать вложенные пространства имен, чтобы иметь что-то вроде core :: utils.Так как это потребует серьезного рефакторинга, я сначала хочу спросить здесь.Как вы думаете?Как бы вы справились с этим?Или в более общем плане: как правильно спроектировать статическую библиотеку с точки зрения пространств имен и организации кода?Если есть какие-то рекомендации или статьи по этому поводу, пожалуйста, используйте их также.Спасибо.
Примечание: я совершенно уверен, что есть более хорошие подходы, чем один.Не стесняйтесь размещать ваши идеи, предложения и т. Д. Так как я проектирую эту библиотеку, я хочу, чтобы она была действительно хорошей.Цель состоит в том, чтобы сделать его максимально чистым и БЫСТРОМ.Единственная проблема заключается в том, что мне придется интегрировать МНОГО существующего кода и реорганизовать его, что действительно будет болезненным процессом ( вздох ) - поэтому хорошая структура так важна)