元编程
元编程有用于操作程序的程序的含义
构建系统
需要定义依赖、目标和规则。必须告诉构建系统您具体的构建目标,系统的任务则是找到构建这些目标所需要的依赖,并根据规则构建所需的中间产物,直到最终目标被构建出来。
make
是最常用的构建系统之一。当执行make
时,会去参考当前目录下名为Makefile
的文件。所有构建目标、相关依赖和规则都需要在该文件中定义。
paper.pdf: paper.tex plot-data.png
pdflatex paper.tex
plot-%.png: %.dat plot.py
./plot.py -i $*.dat -o $@
冒号左侧是构建目标,右侧是构建它所需的依赖。缩进的部分是从依赖构建目标时需要用到的一段程序。
依赖管理
就您的项目来说,它的依赖可能本身也是其他项目。大多数依赖可以通过某些软件仓库来获取。
在使用依赖管理系统的时候,可能会遇到锁文件。锁文件列出了当前每个依赖所对应的具体版本号
持续集成系统
持续集成指的是那些”当您的代码变动时,自动运行的东西“。工作原理:需要在代码仓库中添加一个文件,描述当前仓库发生任何修改时,应该如何应对。最常见的规则是:如果有人提交代码,执行测试套件。当这个事件被触发时,CI提供方会启动一个(或多个)虚拟机,执行您制定的规则,并且通常会记录下相关的执行结果。可以进行某些设置,这样当测试套件失败时能够收到通知或者当测试全部通过时,仓库主页会显示一个徽标。
测试简介
- 测试套件:所有测试的统称
- 单元测试:一种”微型测试“,用于对某个封装的特性进行测试
- 集成测试:一种”宏观测试“,针对系统的某一大部分进行,测试其不同的特性或组件是否能协同工作。
- 回归测试:一种实现特定模式的测试,用于保证之前引起问题的bug不会再次出现
- 模拟:使用一个假的实现来替换函数、模块和类型,屏蔽那些和测试不相关的内容。