用c ++组织代码

时间:2013-03-04 13:10:34

标签: c++

我刚从java转到c ++。 我对组织源代码感到困惑。

在Java中,我们有用于在每个模块之间进行组织的包。

组织c ++源代码有哪些常用方法?

4 个答案:

答案 0 :(得分:4)

如果你看一下C或C ++中的大型开源项目,你会发现很多种方法来组织源代码。但是,一些常见方案是在module内使用component(或src)与includemodule的目录结构。或者,您可以反过来使用src\moduleinclude\module

如果您有测试代码,通常会进入module\testtest\module

较大的C ++项目面临的一个有趣挑战是“在哪里放置组件之间共享的头文件”。有时会有include\public(或public\include),有时它们与各自的组件有关。

将“可供他人使用”的组件部分与仅在内部使用的组件分开是非常有用的 - 因为内部的内容可以轻松更改而对其他组件没有影响或影响最小,在组件外部“可见”的东西需要更多关注 - 如果组件作为DLL发布并且更新DLL而不重新编译使用组件的部件中的源[如果您有第三方客户端]会发生什么情况没有你的源代码(或者至少不太可能经常构建它),你不一定要强迫他们每次做出一些改变时重建他们的项目。

对于大型项目,namespaces用于防止名称冲突。

答案 1 :(得分:0)

部分回应:

您可以先在不同的文件夹中组织文件,例如Java。当你#include一个头文件时,你将输入relative / path / from / src而不是path.of.the.package。

C ++还支持名称空间概念:http://www.cplusplus.com/doc/tutorial/namespaces/

答案 2 :(得分:0)

主要的常见方式是:

在类之外组合#includenamespace可以实现Java包目标。

答案 3 :(得分:0)

第一个显而易见的规则:如果您正在开展团队/协作项目,请遵循明确的(组织的书面最佳实践)或隐含(研究它是如何完成的)项目规则。

如果您自己开展项目,那么您可以在C ++中获得很多自由,因为组织的概念不同:

  • 命名空间,
  • 类,
  • filesystem文件夹,
  • 源文件

因为你有比java更多的自由我建议将文件夹映射到名称空间和文件到合理的类:

  • 为每个类使用.h / .cpp对,但如果它看起来合乎逻辑,也可以包含辅助类或其他链接类,并避免使用大量小文件。
  • 命名空间中的类组,以及具有命名空间名称的文件夹中的相关文件。

这样客户端可以编写如下内容:

#include "groupA/subgroupB/classC.h"
using namespace groupA;
subgroupB::classC object;