2.在编程语言之间进行一次性转换。被动代码生成器的一个有趣的特性:它们不必完全准确。你需要在你投入生成器的努力和你花在修正其输出上的精力之间进行权衡。
3.生成查找表及其他在运行时计算很昂贵的资源。许多早期的图形系统都使用预先计算的正弦和余弦值表,而不是在运行时计算三角函数。在典型情况下,这些表由被动代码生成器生成,然后拷贝到源文件中。
主动代码生成器
被动代码生成器只是一种便利手段,如果你想要遵循DIY原则,主动代码生成器却是必需品。通过主动代码生成器,你可以取某项知识的一种表示形式,将其转换为你的应用需要的所有形式。这不是重复,因为衍生出的形式可以用过就废弃掉,并且是由代码生成器按需生成的(所以用“主动”这个词语)。
无论何时你发现自己在设法让两种完全不同的环境一起工作,你都应该考虑使用主动代码生成器。
在开发数据库应用方面,用户处理两种环境——数据库和用来访问它的编程语言。用户有一个schema,需要定义低级的结构,反映特定的数据库表的布局。也可以直接对其进行编码,但这违反了DIY原则:schema的知识就会在两个地方表示。当schema变化时,你需要记住改变相应的代码。如果某一列从表中被移走,而代码库却没有改变,甚至有可能连编译错误也没有。只有等你的测试开始失败时才会知道它。
另一种办法是使用主动代码生成器—如图2-1所示,读取操作,使用它生成三层架构。现在,无论何时数据库发生变化,用于访问它的代码也会自动变化。如果某一列被移走,那么它在结构中相应的字段也将消失,任何使用该列的更高级的代码就将无法通过编译。 数据库代码自动生成器的设计与实现(4):http://www.751com.cn/jisuanji/lunwen_23436.html