..
Cpp_project_structure
项目构建
项目通过 cmake 构建,每一个项目都必须有一个 lib 以及一个 test ,test 一定要对 lib 做相应的测试。可以根据需要在项目中添加其他 target ,例如 application。test 永远不对外提供,只是对项目里的 lib 以及其他 target 进行测试。
源代码组织规则
- 目录通常意味着是一个命名空间(命名空间通常是一个模块)
- 对于1来说,src目录意味着是项目名的命名空间
- 每一个文件通常代表着一个类,一种函数,并且文件名和类名,方法名相同。
- 对于3,如果有一组函数可以归类,可以用概括性的文件名来将这一组函数进行组织,更好的方法是通过类和类里的静态方法来将这一组函数进行组织(因为都可以放在一起了,相信您可以为这些独立的方法取一个非常具有代表性的名称)
- 对于单独的变量,全局变量,也可以通过4的方式进行组织。
请注意,若要在一个文件中组织多个函数或者变量,请取较为明显的带组织的名字。
测试代码组织
- 测试代码应该进行分类组织。首先是测试大类,用目录进行组织:functional(功能性测试)、integration(集成性测试)、unit(单元测试)、validation(验证测试)
- 对于 validation ,更多的是验证项目需要的功能,应该不包含 src 的代码,仅仅去实验某些 src 需要的功能是否能够实施,并给出相应的样例代码;
- 对于 unit ,更多的是对于 src 中的代码,进行小范围,小单元的测试;
- 对于 integration, 更多的是对于项目中多个模块之间的联合测试,验证多个模块是否能够实现某些想要的功能,并给出样例代码;
- 对于 functional 则是基于项目上的测试,主要用来测试整个项目对外提供的功能是否能够达成要求,并给出相关的样例代码;
- functional 和 integration 对于功能的侧重点主要如下:functional 服务的主要对象是项目的使用者和项目的开发者,其更关心这两者之间的交互;而 integration 的服务对象主要是项目模块 A 的开发者和项目模块 B 的开发者,其更关心这两者之间的交互;
其他target组织
一半来说,除了 src(也就是lib)以及 src 对应的 test,项目中的其他 target 都是基于 src 构建的 applicaion。