代码生成器(一)

       计算机的专家们一起在探寻一种能使得重复代码越来越少的方法,函数封装、面向对象、AOP、MDA、ORM......所有这些相关或者无关的技术都在试图将重复的代码消灭,可是一路起来,人们突然发现,重复的代码是不可能被完全消灭的,到了更高的层次一定会有更高级的重复的代码需要我们去对付,因为代码生成也逐渐不再被妖魔化。网页编辑器、编译器、IDE等这些非常重要的工具不就是代码生成器吗?只要是系统经过好的设计,对于剩下的一些重复性的代码与其使用学院派且严重影响性能的方法进行消除,不如使用代码生成器来完成来得更实在一些。

 

     回到现实中来,在我们开发程序的过程中,特别是开发一些业务系统的过程中,一些重复的代码总是不可避免的,比如ORM中POJO代码和配置文件、资料录入界面的代码、数据库DDL语句等, 这些工作如果要开始人员手动完成的话,不仅会降低效率,而且会带来很多bug,最重要的是极容易使得开发人员产生厌倦心理从而消极怠工甚至离职,从而提高了项目的人力资源成本、增大了项目的风险。因此在大一些的开发团队中都在使用着各种或公开或自酿的代码生成工具,而且越来越多的人开始选择自酿工具,这是因为使用第三方的代码生成工具往往不能满足自己的个性化需求。
 
   我们可以通过多种方式来写代码生成工具,比如最简单的是通过StringBuffer拼字符串,或者借助groovy template、velocity等工具来完成,这些工具各有千秋,不过由于本书是讲解eclipse插件开发的,因此主要看一下在Eclipse中有哪些代码生成方案。

     1.使用StringBuffer拼接来生成代码
     在一些比较简单的代码生成中,这样的方式是比较方便的,但是当生成的代码结构变得越来越复杂的时候,代码中sb.append()与逻辑判断代码搅和在一起,程序变得非常难以维护。
    
     2.使用JDT API中的AST
     JDT会把Java代码编译成AST(Abstract Syntax Tree,抽象语法树),这样复杂的Java代码就变成了相对简单的树状结构,我们就可以通过AST来遍历Java代码,从而解析代码或者对代码进行修改,Eclipse中的Java代码重构就是基于AST来进行的。
     在Eclipse中AST被称为CompilationUnit,对应的接口就是ICompilationUnit,通过Java代码来生成CompilationUnit最简单的方法就是使用IPackageFragment接口中的方法

createCompilationUnit。指定编译单元的名称和内容,于是在包中创建了编译单元,并返回新的ICompilationUnit。我们还可以从头创建一CompilationUnit,即生成一个不依赖于Java代码的CompilationUnit,然后在这个CompilationUnit上添加类、添加方法、添加代码,然后调用JDT的AST解析器将CompilationUnit输出成Java代码。这种方式是最严谨的方式,但是当要生成的代码比较复杂的时候程序就变得臃肿无比,而且只能生成Java代码,不能生成XML配置文件等格式。

 

     3.JET
     JET是Eclipse中一个非常强大的代码生成工具,使用JET你可以运用一些类似JSP一样的语法,这样我们就可以轻松地编写代创建码模板。用它可以创建SQL语句、XML、Java源代码等文件的代码生成器,下面重点讲解JET。待续。

 

 

ps:转自杨中科图书。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值