代码生成所包含的面非常之广,但是对于目前最普遍的层生成器,所使用的技术有很多是共通的。下面简单介绍层生成器所普遍使用的几项技术,以及为你的层生成器选择一门开发语言所要考虑的要点。
编写代码生成器经常使用的技术:
n 文本模板,
代码生成通常意味着创建具有复杂结构文本类型的文件。为了维护生成器的简单性和完整性,你可以使用文本模板工具,这样你可以把逻辑的定义和逻辑的代码格式相分离,这是最理想的情况。
n 正则表达式:
用来检索,扫描源文件,以提取你要用到的信息,正则表达式的缺点就是不易阅读。
n XML:
读入XML文件,进行解析,验证,或者把XML文件作为代码生成器的输出。
n 文件目录的操作:
几乎是每个生成器都会使用的技术,从文件读入代码格式,将生成的代码写到输出文件中。
n 命令行:
命令行有自己的优势,由于代码生成有很多自动过程,所以在有些情况下命令行更高效,简捷。
基于以上几点,在动手编写代码生成器前看看怎样选择编写语言:
n 是否有强大的读写,解析文本文件的能力,这是非常关键的。
n 文本模板是生成器的基础,所以拥有强大且易用的文本模板工具是很重要的。
n 能够快速,方便地处理XML。
n 快捷,强大的文件操作能力,维护,搜索等。
n 语言的效率在这里的优先级不高。因为生成器不是用在产品里的,而且不会长期,频繁的运行。
考虑到以上这些情况,作为编写代码生成器的比较理想的语言就是Python,Ruby之类的脚本语言。一方面,这些语言都有强大的文本处理能力,正则表达式的支持,伴随而来的处理XML的能力,方便的文件及目录的操作。另一方面,由于简洁,代码量少,开发效率高,虽然程序的执行效率稍逊,但是这已不是代码生成器的主要考量因素。我们可以使用这些脚本语言来为我们的企业应用项目来生成代码,来免除一部分重复,无聊的工作。
BTW:本文主要基于《Code Generation in Action》一书,有兴趣的朋友可以看看。