(这一节并不是特别懂,尤其是主动代码生成器)
当需要编写的功能存在于不同的语境,不同的位置时,我们为了避免重复的码字,减少不必要的重复劳动,这时我们就需要构件代码生成器。
*编写可以编写代码的代码
代码生成器分为两种:
1.被动代码生成器
只运行一次来生成代码,而后的生成的结果与代码生成器就完全分离,没有任何的关系了。
被动代码生成器减少敲键次数。实际上是参数化模板。根据输入的参数,输出给定格式的最终结果。(例如:web应用中的前端模板文件,参数就是模板中将被动态语言替换掉的数据,模板文件就相当于前端代码的生成器;新建一个项目文件时,IDE会根据文件类型在头部生成的注释块,也可看作是一个模板的实现。等等)
2.主动代码生成器
每次运行到需要的时候去生成代码,结果在使用之后就被丢弃了。结果代码总是能由生成器去生成。主动代码生成器为了生成结果代码,总是会去读取一些脚本或控制文件。
被动代码生成器只是一种便利的手段,如果想遵从DRY原则,则主动代码生成器会更符合要求。
主动代码生成器可以取某项知识的一种表示形式,将其转换成为你的应用需要的所有形式。当发现自己正在设法让两个不同的环境一起工作时,就应该考虑用主动代码生成器。