日期:2009-05-10 浏览次数:20471 次
你可以完全用自己开发的代码(也可能还有来自MSDN的部分程序模块)来建立一个支持快速应用程序开发(rapid application development,RAD)的环境。但是我认为作为一名.NET开发者,如果你不去考虑现有的第三方代码生成器的话,那么你就是在欺骗你自己以及你的公司。
使用代码生成器(code generator,CG),你就可以从一组简单的设定或者数据库设计中获得几百、几千行代码。如果不采用这项技术的话,开发者就不得不花上几个小时或者几天的时间来手工编写这些代码。许多开发工作室要么让它们的初级程序员创建这些“grunt code”、要么把它外包给国外的程序员以节省开销。CG有着这两种方法所没有的好处,即一致性。
代码生成器是如何工作的
从模板生成的所有代码的命名规则、文件编制、访问机制等都是相同。任何两个开发员各自开发的代码都无法保证这一点(甚至同一个开发员在不同时间所开发的代码也不能保证)。CG有两种工作方式:自顶向下(top down)和自下向上(bottom up)。
使用top-down CG,你可以通过定义系统的对象以及对象之间的关系来定义该系统,CG还创建了事务对象(business object)以及底层数据库大纲(schema)。Bottom-up CG按照你的数据库设计来创建一套数据类以及事务类(依据数据之间的关系)。你可以按照自己的情况来决定采用CG这两种工作方式的某一种。
如果你必须与其它系统的数据库交互且该系统仍将使用其数据库数据,那么你最好采用bottom-up CG,这样可以简化所需产生的数据类,这也就加快了你的开发过程。不过,我一般更喜欢采用top-down CG,因为它要求设计者在事务层次上预定义关系,而且在创建事务类这一工作上它做的比bottom-up CG好很多,你可以继承这些事务类并扩展你的设计。
DeKlarit:一个不错的top-down CG工具
如果你还没有用过top-down CG,那么我强烈建议你下载DeKlarit工具的试用版。自打我开始使用这个工具已经有好几个月的时间了,但是我还是常常对它的强大功能感到吃惊。你只需定义描述系统的数据元素以及它们之间的关系,DeKlarit就会产生一个完整的事务框架(包括事务类和数据类)以及底层数据库。DeKlarit可以用C#或者VB.NET来生成事务框架,用SQL Server或者Oracle来生成数据库。
DeKlarit有三个优点,这三个优点使它成为系统设计者的利器。首先,你只需设计数据元素之间的关系,DeKlarit就会产生结构良好的、标准化的数据库大纲。其次,如果你修改了事务框架,DeKlarit会重新生成代码并在保留数据的同时重新产生与大纲相匹配的数据库。最后,DeKlarit可以产生测试装具模块(test harness),有了这个模块,你就可以通过用ASP.NET或者Windows窗体插入、更新数据的方式来检查事务框架。尽管市面上CG工具并非只有DeKlarit,但是它的确是所有我在进行.NET开发时所用过的top-down CG工具中最出色的。
何时使用代码生成器
许多开发者强调他们在生产环境中不会使用CG所生成的代码,因为他们对最终产品中存在自己所没有碰过的代码而感到不放心。尽管我理解这种担心,但我仍然认为这是没有必要的。退一步来说,即使在最终产品中不采用CG所生成的代码,CG也是为客户开发详细原型的好工具。如果让CG来产生事务类、数据类和数据库大纲的原型,那么你就可以在这个框架的基础上建立你自己的表示类,这样你就可以快速创建种类众多的功能。至少,通过提供一个完整的原型,CG技术可以帮助你快速的发掘出系统潜在的隐患。如果CG所产生的代码可以让你放心的使用,那么它可以帮你节省数周乃至数月的最终开发和测试时间。