`
nathan09
  • 浏览: 155553 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

代码生成器

 
阅读更多

代码生成器

当木匠面临一再地重复制作同一样东西的任务时,他们会取巧。他们给自己建造夹具或模板。一旦他们做好了夹具,他们就可以反复制作某样工件。夹具带走了复杂性,降低了出错的机会,从而让工匠能够自由地专注于质量问题。

  作为程序员,我们常常发现自己也处在同样的位置上。我们需要获得同一种功能,但却是在不同的语境中。我们需要在不同的地方重复信息。有时我们只是需要通过减少重复的打字,使自己免于患上腕部劳损综合症。


  以与木匠在夹具上投入时间相同的方式,程序员可以构建代码生成器。一旦构建好,在整个项目生命期内都可以使用它,实际上没有任何代价。

Write Code That Writes Code!

编写能编写代码的代码!

  代码生成器有两种主要类型:

1. 被动代码生成器只运行一次来生成结果。然后结果就变成了独立的——它与代码生成器分离了。在198页的邪恶的向导中讨论的向导,还有某些CASE工具,都是被动代码生成器的例子。

2. 主动代码生成器在每次需要其结果时被使用。结果是用过就扔的——它总是能由代码生成器重新生成。主动代码生成器为了生成其结果,常常要读取某种形式的脚本或控制文件。

被动代码生成器

  被动代码生成器减少敲键次数。它们本质上是参数化模板,根据一组输入生成给定的输出形式。结果一经产生,就变成了项目中有充分资格的源文件;它将像任何其他文件一样被编辑、编译、置于源码控制之下。其来源将被忘记。

  被动代码生成器有许多用途:

创建新的源文件:被动代码生成器可以生成模板、源码控制指示、版权说明以及项目中每个新文件的标准注释块。我们设置我们的编辑器,让它在我们每次创建新文件时做这样的工作:编辑新的Java程序,新的编辑器缓冲区将自动包含注释块、包指示以及已经填好的概要的类声明。

在编程语言之间进行一次性转换:我们开始撰写本书时使用的是troff系统,但我们在完成了15节以后转向了LaTeX。我们编写了一个代码生成器,读取troff源,并将其转换到LaTeX。其准确率大约是90%,余下部分我们用手工完成。这是被动代码生成器的一个有趣的特性:它们不必完全准确。你需要在你投入生成器的努力和你花在修正其输出上的精力之间进行权衡。

生成查找表及其他在运行时计算很昂贵的资源:许多早期的图形系统都使用预先计算的正弦和余弦值表,而不是在运行时计算三角函数。在典型情况下,这些表由被动代码生成器生成,然后拷贝到源文件中。

主动代码生成器

  被动代码生成器只是一种便利手段,如果你想要遵循DRY原则,它们的"表亲"主动代码生成器却是必需品。通过主动代码生成器,你可以取某项知识的一种表示形式,将其转换为你的应用需要的所有形式。这不是重复,因为衍生出的形式可以用过就扔,并且是由代码生成器按需生成的(所以才会用主动这个词)。

  无论何时你发现自己在设法让两种完全不同的环境一起工作,你都应该考虑使用主动代码生成器。

  或许你在开发数据库应用。这里,你在处理两种环境——数据库和你用来访问它的编程语言。你有一个schema,你需要定义低级的结构,反映特定的数据库表的布局。你当然可以直接对其进行编码,但这违反了DRY原则:schema的知识就会在两个地方表示。当schema变化时,你需要记住改变相应的代码。如果某一列从表中被移走,而代码库却没有改变,甚至有可能连编译错误也没有。只有等你的测试开始失败时(或是用户打电话过来),你才会知道它。

  另一种办法是使用主动代码生成器。读取schema,使用它生成结构的源码。现在,无论何时schema发生变化,用于访问它的代码也会自动变化。如果某一列被移走,那么它在结构中相应的字段也将消失,任何使用该列的更高级的代码就将无法通过编译。

你在编译时就能抓住错误,不用等到投入实际运行时。当然,只有在你让代码生成成为构建过程自身的一部分的情况下,这个方案才能工作。

  使用代码生成器融合环境的另一个例子发生在不同的编程语言被用于同一个应用时。为了进行通信,每个代码库将需要某些公共信息——例如,数据结构、消息格式、以及字段名。要使用代码生成器,而不是重复这些信息。有时你可以从一种语言的源文件中解析出信息,并将其用于生成第二种语言的代码。用更简单、语言中立的表示形式来表示它,并为两种语言生成代码,常常更简单。

代码生成不一定要很复杂

  所有这些关于"主动这个"和"被动那个"的谈论可能会给你留下这样的印象:代码生成器是复杂的东西。它们不一定要很复杂。最复杂的部分通常是负责分析输入文件的解析器。让输入格式保持简单,代码生成器就会变得简单。

代码生成器不一定要生成代码

  尽管本节的许多例子给出的是生成程序源码的代码生成器,事情并不是非如此不可。你可以用代码生成器生成几乎任何输出:HTML、XML、纯文本——可能成为你的项目中别处输入的任何文本。

====================================

代码生成器:

==================总体============================
上次在群中一位不知名的家伙,不愿共 享他的代码生成器,于是我准备搜索一下关于代码生成器的东西,不想一搜索还真多,搜索出最多的要算CodeSmith了[试用版30天],这个软件真的不 错,不过由于没有找到3.0版本的序列号,只得再找别的代码生成器。我找的是一个基于网页的东西,用vbscript写的,wawacodepro不过觉 得还不错,而且开源,所以给大家推荐一下。下载地址:http://www.mydown.com/soft/235/235581.html
==================================================

===================CodeSmith======================
下载CodeSmith需要注册一下Email,注册地址是http://www.codesmithtools.com/license.aspx,5分钟后收到下载地址的Email。然后下载即可,只是下载速度有点慢。
在以下地址有关于代码生成器的探讨:
MSDN:http://www.microsoft.com/china/msdn/library/langtool/vsdotnet/realworld11022004.mspx
NickyBlog:http://nicky.blogchina.com/572664.html [强力推荐]
还有针对CodeSmith的文章自己可以搜索一下如果下面的链接不能满足你的需要
3.0新特性:http://www.alphatom.com/content/view/211/39/
官方论坛:http://forum.codesmithtools.com/default.aspx
十种必备工具关于CodeSmith:
http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/TenMHToolEDevShouDN.mspx?pf=true#EOAA
===================================================

====================CodePlus=======================
易为工作室开发的代码生成器:http://www.codeplus.net/ 专为sql server c#语言设计的代码生成器。
有限量字段[15个]的免费版,不过即便掏钱也买不到源码,还有个人捐赠版和100元/套的版本。不过我看不需要掏钱去买这些东西。虽然他的功能还是蛮强大的。
===================================================

====================CodeMaker======================
asp, jsp,php代码生成工具,自动生成维护数据库信息的动态网页的代码生成器。它可以帮助ASP、JSP、PHP开发人员快速的开发简单的数据库维护程 序。无需任何编码,只需将数据库结构导入到CodeMaker中并做简单的设置,CodeMaker即可生成完整的数据库操作页面。用CodeMaker 可以简单快速的创建网站后台维护程序。提高开发效率数十倍以上。
下载地址:http://www.mhua.com/codemaker/codemaker/codemaker_setup.exe
===================================================

====================还有一个简单的基于nhibernate的=
飞鹰[]的coolcoder,专门为采用nhibernate做关系对象影射架构的系统提供代码的工具,简单易用,虽然不提供源码,我们可以用反编译工具对其反编译看源码。这是个很不错的学习机会。
===================================================

以上种种,均为被动代码生成器,没有花力气去写一个,是因为已经有这么多好的了。

====================『天道酬勤』 的专栏 2005年10月文章 一下内容为2005年10月14日更新
介绍自己的代码生成器有新特点
可以选择模板,这样就可以针对不同的应用写模板生成更加通用的各种代码(包括模型、数据操作、页面等),不过作者没有在blog上提供下载,需向作者本人联系。相比千里独行提供了自己的下载,
====================千里独行
C#做的代码生成器,是一个EXE,使用.NET框架1.1,需要IE6的支持
本程序可解析SQLServer的数据库结构,保存结构信息到XML,然后使用XSLT技术来生成某些代码,用户可自己添加XSL模板文件
程序的下载地址为 http://www.cnblogs.com/Files/yyf9989/CreateCode.rar, 可直接运行
====================菲菲.net
非非.Net代码生成器1.0正式版发布,该生成器的最大特点就是和VS.NET集成的很好,安装插件后直接在.net开发环境中使用生成的代码直接包含在项目中。
====================http://teddyma.cnblogs.com/ Teddy's Chinese Blog20051231更新
没有ORM或代码生成数据就不能持久化了? - 用范型技术代替代码生成!
该文详细说明了利用.net2.0中C#范型达到ORM的效果,字里行间表达了作者对代码生成的自我看法。

====================http://www.codefutures.com/products/firestorm/tutorial/ 20060111更新
这是一个java世界里的工具,我还没有来得及看其效果如何,该站点有详细说明,需要的朋友可以去看看

看完视频了,感觉verygood,可以根据数据库[支持多种数据库]生成指定模板的数据对象、jsp页面、或者基于strus的源代码,最后用ant编译生成的源代码,即可得到所有需要的东西。
分享到:
评论

相关推荐

    C#代码生成器

    《C#代码生成器详解与应用》 C#代码生成器是一种高效开发工具,它能够帮助程序员快速生成符合特定需求的C#源代码,极大地提高了编程效率和代码质量。在.NET框架下,C#作为主要的开发语言,其代码生成器的作用显得尤...

    .net C#代码生成器

    《.NET C#代码生成器:提升开发效率的利器》 在软件开发过程中,编写重复性的基础代码是一项耗时的任务,而.NET C#代码生成器就是为了解决这一问题而诞生的工具。它能帮助开发者自动生成一些常见的、标准化的代码,...

    人人代码生成器贼好用啊

    人人代码生成器是一款高效实用的工具,主要用于自动化代码编写过程,极大地提高了开发人员的生产力。在软件开发领域,代码生成器扮演着至关重要的角色,它能够根据预设的模板或模型自动生成符合特定规范的源代码,...

    asp.net 代码生成器 .NET代码生成器 C#代码生成器 三层源代码生成器

    asp.net 代码生成器 【基本说明】 1、能够生成三层模式操作的所有后台代码,简单的SQL Server 2005数据库操作。 2、生成的代码包括了 MODEL、BLL、DAL、DBHelper、Config 生成的代码内有详细注释可提供参考。 ...

    代码生成器 代码生成器 代码生成器

    代码生成器是一种强大的工具,它能够自动生成符合特定规范或模式的源代码,极大地提高了开发效率,降低了程序员的重复劳动。在IT行业中,代码生成器的应用广泛,尤其在大型项目或者需要大量标准化代码的场景下,如...

    C#三层代码生成器

    "C#三层代码生成器"是一个工具,旨在帮助开发者快速生成C#项目的三层架构代码,减少手动编写代码的工作量,提高开发效率。三层架构是一种常见的软件设计模式,它将应用程序分为三个主要层次:表现层(UI)、业务逻辑...

    代码生成器(Asp.net(c#))源码

    《Asp.net(C#)代码生成器源码详解》 在软件开发过程中,代码生成器是一种提高效率的重要工具,尤其在Asp.net(C#)框架下,它能够自动生成大量基础代码,帮助开发者快速构建应用的骨架。本文将深入探讨Asp.net(C#)...

    mybatis 代码生成器

    MyBatis 代码生成器是一款高效实用的工具,旨在帮助开发者自动创建常见的CRUD操作代码,从而节省在数据库交互上花费的时间,提高开发效率。它支持多种数据库,包括Oracle和MySQL,这意味着无论你使用哪种数据库,都...

    SSH代码生成器

    SSH代码生成器是一种工具,主要用于自动化生成基于SSH(Spring、Struts2和Hibernate)框架的Web应用程序的基础代码。SSH框架是Java开发中的一个经典组合,它极大地提高了开发效率,简化了项目的构建过程。SSH框架的...

    CSharp C#代码生成器

    【CSharp C#代码生成器】是一个强大的工具,专为C#开发者设计,旨在提高开发效率,尤其是在处理大量数据操作和界面构建时。这个代码生成器可以自动生成用于Web应用程序和Windows Forms(Winform)应用的C#代码,极大...

    UC广播代码生成器 51vv广播代码生成器

    标题中的“UC广播代码生成器 51vv广播代码生成器”指的是两个不同的工具,用于创建特定的广播代码。在IT行业中,"广播代码"通常指的是应用或系统间进行通信时使用的信号或指令,特别是在Android操作系统中。UC广播...

    .net 3层代码生成器

    《.NET 三层代码生成器详解与应用》 在软件开发过程中,代码生成器是一种能够自动化生成特定结构或模式代码的工具,极大地提高了开发效率,降低了出错的可能性。本文将详细探讨一个基于.NET的三层代码生成器,它能...

    MybatisPlus代码生成器

    MybatisPlus代码生成器是一款强大的工具,专为简化基于MybatisPlus的Java开发流程而设计。它能够自动化地创建常见的项目结构文件,如实体类(entry)、数据访问对象(DAO)、服务接口及其实现(Service & Impl)、...

    SQL代码生成器_sql代码生成_sqlserver_

    SQL代码生成器是一种工具,它自动化了创建SQL脚本的过程,极大地提高了开发人员的效率。在SQL Server环境下,这样的工具尤为重要,因为SQL Server数据库的复杂性和规模常常需要编写大量复杂的查询和数据操作语句。本...

    垃圾代码生成器

    【垃圾代码生成器】是一种工具,通常用于iOS应用的马甲包(即替代包或伪装包)提交审核过程。在iOS应用开发中,马甲包是开发者为了规避App Store的审核限制或者进行测试策略而创建的与原应用相似但内容不同的应用...

    STM8函数库代码生成器

    STM8函数库代码生成器是一款专门针对STM8微控制器设计的工具,用于自动化生成与STM8芯片相关的函数库代码。STM8是意法半导体(STMicroelectronics)推出的一系列8位微控制器,广泛应用于各种嵌入式系统设计,如家用...

    动软代码生成器工具2023

    动软代码生成器是一款完全自主知识产权研发的为软件项目开发设计的自动代码生成器,也是一个软件项目智能开发平台,它可以生成基于面向对象的思想和三层架构设计的代码,结合了软件开发中经典的思想和设计模式,融入...

    代码生成器代码生成器.zip

    代码生成器是一种软件工具,它能够自动生成编程代码,帮助开发者快速构建应用程序或系统,减少重复的手动编码工作。在IT行业中,代码生成器扮演着提高效率、减少错误和标准化编码的重要角色。以下是对这个主题的详细...

    c51代码生成器

    《51单片机C51代码生成器详解》 51单片机以其结构简单、性价比高、易于上手等特点,在嵌入式系统开发领域占据了一席之地。在51单片机的编程过程中,C51语言是常用的一种高级编程语言,它将C语言的简洁性和单片机...

Global site tag (gtag.js) - Google Analytics