惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tenable Blog
Last Week in AI
Last Week in AI
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
H
Help Net Security
F
Fortinet All Blogs
MyScale Blog
MyScale Blog
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 司徒正美
量子位
N
Netflix TechBlog - Medium
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
Recorded Future
Recorded Future
博客园 - 三生石上(FineUI控件)
Vercel News
Vercel News
aimingoo的专栏
aimingoo的专栏
I
InfoQ
Microsoft Security Blog
Microsoft Security Blog
Scott Helme
Scott Helme
The Last Watchdog
The Last Watchdog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
AI
AI
WordPress大学
WordPress大学
Security Archives - TechRepublic
Security Archives - TechRepublic
Google Online Security Blog
Google Online Security Blog
U
Unit 42
V2EX - 技术
V2EX - 技术
MongoDB | Blog
MongoDB | Blog
Schneier on Security
Schneier on Security
博客园 - Franky
H
Heimdal Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Jina AI
Jina AI
W
WeLiveSecurity
P
Privacy & Cybersecurity Law Blog
Cloudbric
Cloudbric
B
Blog RSS Feed
N
News | PayPal Newsroom
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
I
Intezer
Hacker News - Newest:
Hacker News - Newest: "LLM"
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园_首页
罗磊的独立博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
雷峰网
雷峰网

博客园 - 未未

用vsstudio 设计Winform 高分屏上布局错乱的问题 探寻路径 jsonToxml 通过LL型方法实现(C#)[源] 数据类型和Json格式[zt] 繁星代码生成器开源 (源代码) 繁星查询分析器 代码生成器 架构提取工具-tqdemo SyCODE Syntax Highlighter javascript语法高亮引擎 自动代码生成和VBA脚本 模板语法规则说明 繁星代码生成器0.91版 【视频】 0.9版-繁星代码生成器 转:C#开源资源大汇总 代码生成原则Top10 我的系分之路 你必须知道的10种国产编程语言 揭秘正则表达式 我的lxfRegex现实[源] 有关调试的方法 [源码]C# to SQL 的翻译器.net 1.1版
代码生成工具的分类及比较
未未 · 2009-05-21 · via 博客园 - 未未

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

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

连接串编辑器

×

筛选表、字段、关系

×

×

表、字段、关系别名

×

合并数据架构

×

×

定义模板参数

定义模板界面

×

架构(表、字段、关系等)筛选的重要性:一般的应用都会划分为几个不同的部分,每部分一般对应到不同的表(一般会有所重叠),按照应用的不同将数据库架构划分为相应的子架构,更有利于开发、管理和维护。

设置别名的重要性:有时表名、字段名等由于种种原因(比如国内的一些系统经常用拼音缩写,从一个拼音缩写反推原来的名称真是比翻译天书还难)不符合实际时,别名能使之更易读,更准确。