c++ - 组织源代码 (C++)

标签 c++ code-organization project-organization

对于一个科学项目,我有一个模板化分析工具(模块 A),它使用一种统计测试(模块 B)。分析工具(模块 A)用于两类问题(模块 C 和 D)。模块 C 和 D 定义了从不同文件类型序列化的函数。

所有模块(A、B、C 和 D)都使用通用实用程序(模块 E)。每个模块由几个文件组成。我真的很想组织模块,使每个模块都有自己的命名空间,因此源文件位于不同的目录中(即强调组织中的模块化)。

在每个文件中定义命名空间是微不足道的。但我希望使用某种源代码树,其中每个模块的 #include 文件将在其自己的命名空间中包含所有其他文件。

我不太确定组织这个的好方法。我应该只为每个模块使用一个文件夹并使用相对路径#include 吗?每个模块是否应该有自己的 git 存储库,并编译成单个库文件,该文件位于指定的 UNIX 文件夹中(这需要真正安装才能运行项目)。

现在我正在使用 gcc-4.7、make 和 emacs。

您知道组织这些文件以实现模块化的方法吗?

请原谅我并建议是否有其他 StackOverflow 分支机构更适合这个问题。我的项目运行了,但它比需要的要乱得多!

最佳答案

But I was hoping to use some sort of source tree where the file to #include for each module would include all others inside its own namespace.

这是错误的做法。即使 A 在模块级别依赖于 E,这也不一定意味着 A 内的所有组件都依赖于 E 内的所有组件,您不应该通过包含强制实现这一点。

包含应该明确(包括您真正需要的一切)和精确(不包括任何您不依赖的东西)。

也就是说,我会在模块中组织代码,每个模块都有一个单独的目录。如果模块变得复杂到需要拆分为子模块,那么您可以添加嵌套目录,但一个两级层次结构就足够了。

关于c++ - 组织源代码 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12923235/

相关文章:

c++ - 具有不同参数的多个构造函数

c++ - 循环直到整数输入在要求的范围内无法处理非数字字符输入

css - 如何更有效地组织这些 CSS 选择器?我希望 CSS 选择器应用于也分配了 id 的元素

javascript - jQuery 和 "Organized Code"

electron - 如何构建 Web/Electron 应用程序 - 代码将在两个地方

c++ - 模板类的接口(interface)

c++ - lua_isstring 迭代表中表的问题

c - 在另一个中包含一个 C 源文件?

django - 为什么将 Django 模板存储在其关联的应用程序中是不明智的?

GitHub 与 Google Code 的业余爱好项目