`
wanjianfei
  • 浏览: 307200 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

代码生成工具的分类及比较

阅读更多

中国有句古语叫做“工欲善其事,必先利其器”,用通俗的话来说就是“磨刀不误砍柴功”,古人的这些话告诉我们:要把事情做好,事先应该准备合适的工具。工具不仅仅包括器具,还包括思想、理论、经验、道德、法律等一切能解决问题的有形和无形的东西。

工具有好和坏、适用和不适用之分。比如当你只是需要看一看文本文件的内容时,那么 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

分享到:
评论

相关推荐

    PhpCMS V9代码生成器 V1.5 Final版本PHPCMS中国发布

    PhpCMS V9代码生成器是一款绿色免费的编程工具软件,无需安装即可使用,可以帮助PHPCMS V9模板制作者快速、高效地部署代码,自动生成调用标签,大大减轻模板作者的工作量,节省phpcms模板制作耗费的时间,phpcms爱好...

    动软.Net代码自动生成器(Codematic)

    软件名称:动软.Net代码自动生成器(Codematic) 软件版本:1.9.7.2 (2006.4.14) 软件容量:2.65 MB 软件分类:开发工具 软件性质:国产软件 / 简体中文 / 免费软件 应用平台:WinNT/2000/XP...

    SpringBoot Vue3 ElementPlus 后台通用权限管理系统 代码生成器 一键生成后端前端代码

    SpringBoot Vue3 ElementPlus 前后端分离后台通用权限管理系统源码,支持多语言切换,带环境搭建,项目运行,代码生成器使用说明 ...字典管理(统一管理常用数据分类),代码生成(一键生成后端前端增删改查代码)

    淘宝装修CSS特效代码自动生成器 装修助理工具 开店助手软件免费模板+教程下载

    淘宝店铺特效装修软件,官方正式版,免费试用,美工必备,店铺装修助手/助理 组合70多种特效代码生成功能, 包括全屏轮播,店招,导航,分类,商品展示,各类图片轮播等 商品信息自动导入,自动批量填充功能,

    随机姓名生成器 (按性别) C# 源代码和执行程序

    随机生成指定数量的人名字,如下面的运行结果: 100个男性名字 古彬邦 司徒军会 饶光振 乐东涛 史哲广 李岩安 邓松勇 韩彪诚 时辉东 齐才贵 欧坚飞 丁江彬 黎飞哲 江进坚 骆富壮 毕壮山 石涛江 倪俊河 郎刚兴 黄...

    Pytorch实现数字对抗样本生成全套代码(GAN)

    利用GAN的思想,进行数字对抗样本生成,以LeNet作为图像分类模型,LeNet是一个小型的神经网络结构,仅包含两层卷积层、两个池化层以及三层全连接。该轻量级网络能快速、占内存小、高精确度的解决复杂度比较低的问题...

    慧达汇通快递单号生成器 v10.0.zip

    慧达汇通快递单号生成器V10.0版,支持生成当天真实汇通快递单号,系统采用了当前最先进的超云查询与高级类推技术,并与每晚的23:00-13:00开放了免费使用,慧达旗下快递单号生成器是目前行业内使用人数最多、查询...

    基于数据库的自动化生成工具,自动生成JavaBean、数据库文档、框架代码等(v5.8.8版_JAR)

    一直以来根据数据库表结构自动生成项目框架代码都是一件让人很头痛的事情,如果能自动生成框架的结构性代码,那么项目组成员的开发效率能迅速提高60%以上,开发人员就只要关注业务代码的编写了。 TableGo可以根据...

    各种matlab算法代码及模型分类

    算法代码及模型分类,包括但不限于中国大学生数学建模竞赛题解、哈密尔顿回路、图形、微积分和微分方程、数据拟合、方程求根、最大流和最小截、最小生成树Prim算法、最短路和次短路、模拟退火应用、生成全排列矩阵、...

    手绘流程图c++源代码生成流程图

    根据C语法规则,书写简单流程,自动生成流程图。 用已有c和c++代码生成流程图。 对流程图类的文档进行分类管理。 是个不错的流程图绘制管理工具,具体操作参见里面的说明文件。

    Kubernetes资源Yamls的K8s Go客户端代码生成器-Golang开发

    kyaml2go(发音为camel2go:two-...h kyaml2go(发音为camel2go:two-hump_camel:)https:// kyaml2go.prasadg.dev来自Kubernetes资源规范yaml的Go客户端代码生成器受支持的资源可在此处找到受支持的种类和组的列表:...

    数学建模matlab常用算法代码整理集合.rar

    K-means算法代码,RBF神经网络做回归预测代码,SVM分类器代码,Topsis算法综合评价代码,层次分析法代码,插值与拟合代码,多目标规划matlab程序实现,二次指数平滑及其时间序列预测代码,规划模型代码,灰色关联...

    目录文件索引生成器1.4

    索引文件中每一项就是文件名,可以无扩展名,可以使用通配符,可以包含属性,按所属目录进行分类。 3. 文件名每一项可以进行连续编号,也可以按目录分别进行编号,还可以不要编号,可以选择编号方式。目录名单独...

    基于51单片机的信号发生器(adc幅值检测、波形生成器、流程图、源代码、protues仿真工程)

    基于51单片机的信号发生器(adc幅值检测、波形生成器、流程图、源代码、protues仿真工程) 波形发生器亦称函数发生器,作为实验用信号源,是现今各种电子电路实验设计应用中必不可少的仪器设备之一。目前,市场上常见...

    基于 BPM 的低代码平台:jeecg-boot

    主要语言:Java 项目分类:[编程语言] [后端] [工具] 项目标签:[开发工具] [Java] [低代码开发] ...它提供了强大的代码生成器,可一键生成前后端代码,支持微服务架构,帮助Java项目解决70%的重复工作,实现快速开发。

    使用 GAN生成时尚图像,无需编写单行代码_python_代码_下载

    如果训练数据集可以增加更多图像,则可以提高这些分类器的性能。 如何生成新图像 考虑一下深度卷积 GAN (DCGAN) 模型,它是一种用于生成高质量时尚 MNIST 图像的 GAN。DCGAN模型如下图: 图 1:用于生成时尚图像...

    matlab代码实现贝叶斯分类和马氏距离分类

    用matlab代码实现的贝叶斯分类器和马氏距离分类器,随机生成样本。

    目录文件索引生成器1.1.0

    索引文件中每一项就是文件名,按所属目录进行分类,文件名每一项可以进行连续编号,也可以按目录分别进行编号,还可以不要编号,可以选择编号方式。目录名单独编号。 该软件简单易用,方便用于文档编辑的人进行...

    模糊规则的生成

    这些代码用于模糊控制中模糊规则的生成,非常有用,特别是对学习模糊控制的人来说

    Deiphi源码:函数工厂,函数生成器.rar

    deiphi函数工厂,是一个函数快速生成器,3年前的作品,纯粹是为了好玩,和一个网友一起合作写的。东西很杂,带一个数据库,能搜索一些以前搜集的资料。不过当时和朋友合作的时候,是打算写成IDE插件那样,方便自己...

Global site tag (gtag.js) - Google Analytics