我目前正在开发一个相当大的静态库,完成后某些工具将使用该库。现在,由于这个项目比我迄今为止参与的任何项目都要大,我意识到是时候为这个项目考虑一个好的结构了。使用命名空间是这些合乎逻辑的步骤之一。
我目前的方法是将库分成几部分(它们不是独立的,但它们的目的需要这样的分离)。我有一个“核心”部分,它现在只包含一些非常常见的 typedef 和常量(由库的许多不同部分使用)。其他部分是例如一些'utils'(散列等)、文件i/o等。这些部分中的每一个都有自己的命名空间。我几乎完成了“utils”部分,并意识到我的方法可能不是最好的。问题(如果我们想这样称呼它)是在 'utils' 命名空间中,我需要来自 'core' 命名空间的东西,这导致包含核心头文件和许多 using 指令。
所以我开始认为这可能不是一件好事,应该以某种方式改变。我的第一个想法是使用嵌套命名空间来拥有类似 core::utils 的东西。由于这将需要一些繁重的重构,我想先在这里问一下。你怎么看?你会怎么处理这个?或更笼统地说:如何根据命名空间和代码组织正确设计静态库?如果有一些关于它的指南或文章,也请提及。谢谢。
注意:我很确定还有更多的好方法,而不仅仅是一种。随意发表你的想法、建议等。因为我正在设计这个库,所以我希望它真的很棒。目标是使其尽可能干净和快速。唯一的问题是我将不得不集成大量现有代码并对其进行重构,这确实是一个痛苦的过程(叹气)——这就是为什么好的结构如此重要)