代码生成工具的分类及比较
2006-09-06 10:45
246 查看
中国有句古语叫做“工欲善其事,必先利其器”,用通俗的话来说就是“磨刀不误砍柴功”,古人的这些话告诉我们:要把事情做好,事先应该准备合适的工具。工具不仅仅包括器具,还包括思想、理论、经验、道德、法律等一切能解决问题的有形和无形的东西。
工具有好和坏、适用和不适用之分。比如当你只是需要看一看文本文件的内容时,那么 Notepad 就是一个很好的工具。但是有些人不辨好歹,盲目地“以不变应万变”,“只用 NotePad 完全手写代码”并且以此为荣,“实乃兵家之大忌”。
闲话少说,言归正传。
在你需要一些重复或者相似的代码时,就应该准备好一款名叫“代码生成器”的利器。说到代码生成器,很多人误以为它只能生成程序代码。其实一款灵活的代码生成器还能够生成报表、帮助等一切文本或基于文本的文件(比如 CHM);好的代码生成器的数据来源不仅仅是数据库架构,也可以是数据库数据,还可以是 XML 等其它数据。
代码生成器根据生成逻辑的存储方式可以分为两种:程序固化的和基于模板的。
程序固化的方式将生成代码的逻辑存储在生成器中,一般是通过编写一些字符串的串连代码,这些代码在运行时生成用户的代码。
基于模板的方式将生成代码的逻辑存储在生成器之外的模板文件中,用户可以根据实际需要修改相应的模板,或者自行开发合适的模板。
基于模板的代码生成方式又可以分为:基于标记的和基于编程的。
基于标记的方式定义一套标记规则,在模板中按需插入特定的标记,当这些模板被生成器调用时,标记就被替换为相应的内容,类似于宏替换。
基于编程的方式很像 ASP/JSP/PHP,它采用一种编程语言(或在多种中选择一种),将程序代码和文本代码混合在一起,并通过一定的标记(比如<%%>)来区分。这类模板其实就是一个应用程序,它运行的结果就是用户需要的代码。
下面我们来看看这几种生成方式的比较,首先从开发商的角度来看:
再从用户的角度进行对比:
目前网络上比较有影响的代码生成工具都采用基于编程的模板技术。
网络上还有一些号称也是“基于模板”的代码生成器,也将代码生成逻辑存储在“模板文件”中,在“模板文件”中通过编写一系列的程序代码将字符串串连起来,既不是采用标记的方式,也不是采用类 ASP/JSP/PHP 的方式,其本质上和程序固化的方式并无区别,因此不在本文讨论之列。
下面我将列举三种具有代表性的代码生成器进行对比,对比的内容均来自官方网站或其文档,供大家选择时参考。
MyGeneration :在 download.com 上保持下载量第一的 .NET 开发工具。
CodeSmith :获得 aspnetpro.com 用户评选的最佳工具奖。
CodeAuto :最具发展潜力的代码生成工具。
架构(表、字段、关系等)筛选的重要性:一般的应用都会划分为几个不同的部分,每部分一般对应到不同的表(一般会有所重叠),按照应用的不同将数据库架构划分为相应的子架构,更有利于开发、管理和维护。
设置别名的重要性:有时表名、字段名等由于种种原因(比如国内的一些系统经常用拼音缩写,从一个拼音缩写反推原来的名称真是比翻译天书还难)不符合实际时,别名能使之更易读,更准确。
引自:http://www.cnblogs.com/Kimphi/archive/2006/09/06/495875.html
工具有好和坏、适用和不适用之分。比如当你只是需要看一看文本文件的内容时,那么 Notepad 就是一个很好的工具。但是有些人不辨好歹,盲目地“以不变应万变”,“只用 NotePad 完全手写代码”并且以此为荣,“实乃兵家之大忌”。
闲话少说,言归正传。
在你需要一些重复或者相似的代码时,就应该准备好一款名叫“代码生成器”的利器。说到代码生成器,很多人误以为它只能生成程序代码。其实一款灵活的代码生成器还能够生成报表、帮助等一切文本或基于文本的文件(比如 CHM);好的代码生成器的数据来源不仅仅是数据库架构,也可以是数据库数据,还可以是 XML 等其它数据。
代码生成器根据生成逻辑的存储方式可以分为两种:程序固化的和基于模板的。
程序固化的方式将生成代码的逻辑存储在生成器中,一般是通过编写一些字符串的串连代码,这些代码在运行时生成用户的代码。
基于模板的方式将生成代码的逻辑存储在生成器之外的模板文件中,用户可以根据实际需要修改相应的模板,或者自行开发合适的模板。
基于模板的代码生成方式又可以分为:基于标记的和基于编程的。
基于标记的方式定义一套标记规则,在模板中按需插入特定的标记,当这些模板被生成器调用时,标记就被替换为相应的内容,类似于宏替换。
基于编程的方式很像 ASP/JSP/PHP,它采用一种编程语言(或在多种中选择一种),将程序代码和文本代码混合在一起,并通过一定的标记(比如<%%>)来区分。这类模板其实就是一个应用程序,它运行的结果就是用户需要的代码。
下面我们来看看这几种生成方式的比较,首先从开发商的角度来看:
项目\类型 | 程序固化 | 基于模板 | |
基于标记 | 基于编程 | ||
生成逻辑 | 在生成工具中 | 在模板文件中 | 在模板文件中 |
开发难度 | 低 | 适中 | 高 |
可维护性 | 差 | 好 | 好 |
维护成本 | 高 | 低 | 低 |
项目\类型 | 程序固化 | 基于模板 | |
基于标记 | 基于编程 | ||
方便性 | 好 | 好 | 好 |
扩展性 | 差,用户无法自己定制 | 好,用户可以按需定制 | 好,用户可以按需定制 |
适应性 | 差 | 好,但无法适应复杂情况 | 很好 |
定制成本 | 无法定制 | 需要学习一套标记规则 | 需要学习模板编程规则 |
网络上还有一些号称也是“基于模板”的代码生成器,也将代码生成逻辑存储在“模板文件”中,在“模板文件”中通过编写一系列的程序代码将字符串串连起来,既不是采用标记的方式,也不是采用类 ASP/JSP/PHP 的方式,其本质上和程序固化的方式并无区别,因此不在本文讨论之列。
下面我将列举三种具有代表性的代码生成器进行对比,对比的内容均来自官方网站或其文档,供大家选择时参考。
MyGeneration :在 download.com 上保持下载量第一的 .NET 开发工具。
CodeSmith :获得 aspnetpro.com 用户评选的最佳工具奖。
CodeAuto :最具发展潜力的代码生成工具。
项目\软件 | MyGeneration | CodeSmith Pro | CodeAuto |
性质 | |||
免费 | √ | × | √ |
源代码 | × | × | √ |
模板 | |||
类ASP语法 | √ | √ | √ |
模板语言 | C#,JScript, VB.NET,VBScript | C#,VB.NET, JScript | Nuva |
IDE | √ | √ | CodeAuto Studio |
支持命令行 | √ | √ | √ |
Visual Studio 集成 | × | √ | × |
已有模板数量 | 很多 | 多 | 11 |
架构 | |||
支持数据库种类 | 12 | 1+ | 5+ |
连接串编辑器 | √ | × | √ |
筛选表、字段、关系 | × | × | √ |
表、字段、关系别名 | √ | × | √ |
合并数据架构 | × | × | √ |
定义模板参数 | √ | √ | √ |
定义模板界面 | √ | × | √ |
设置别名的重要性:有时表名、字段名等由于种种原因(比如国内的一些系统经常用拼音缩写,从一个拼音缩写反推原来的名称真是比翻译天书还难)不符合实际时,别名能使之更易读,更准确。
引自:http://www.cnblogs.com/Kimphi/archive/2006/09/06/495875.html
相关文章推荐
- 代码生成工具的分类及比较
- 代码生成工具的分类及比较
- 代码生成工具的分类及比较
- 代码生成工具的分类及比较
- 数据库逆向框架代码生成工具:MyBatis Generator的使用
- 渐变代码实用的 CSS3 参考手册和代码生成工具
- GhostDoc Pro v4.9.14093.Cracked.By.SubMain 一款好用的代码注释生成工具——VS插件
- FastSpring学习笔记二(使用工具MyGeneration生成Model和NHibernate的代码 )
- 各种GIT代码托管工具比较
- Ruby相关的比较cool的工具和代码收集
- 发布Oracle存储过程包c#代码生成工具(CodeRobot)
- RUF MVC5 Repositories Framework Generator代码生成工具介绍和使用
- CLIP PATH (MASK) GENERATOR是一款在线制作生成clip-path路径的工具,可以直接生成SVG代码以及配合Mask制作蒙板。
- 代码文档生成工具-Doxygen生成CHM和RTF图文教程
- 常用的Net代码自动生成工具介绍
- 用PowerDesigner作为Hibernate代码生成工具
- 强大的代码生成工具MyGeneration
- 常用 Java 静态代码分析工具的分析与比较
- 代码生成相关工具及技术
- 常用 Java 静态代码分析工具的分析与比较