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

最近开发了一套代码生成工具。

阅读更多
好久没更新日志了,我最近花了大概一个多月的时间做了个代码生成工具,生成的代码都是和公司的框架相关的,生成相应的后台代码和前台代码和配置文件,目前可以通过数据表和po来生成相应的代码,那么可以生成单表,树型单表,主从表,树型主从表这几种模式。当然它生成的只是这个项目里面最常用的操作,比如新增,修改,删除,导出等等。那么生成的逻辑都是最简单的逻辑,开发人员可以在生成后的基础上,将具体的逻辑判断加进去。生成的界面就是列表页面,新增页面,修改页面,查看页面。当然如果是主从表,那么就会生成从表的维护页面,那么前台页面的基本验证都可以生成好了,比如日期,是否为空,是否是数字等等。


我个人感觉它有以下三个作用。
1.可以提高一定的工作效率,因为可以生成60%-80%的代码,而且有IO处理,是可以直接生成到你指定好的工作目录里面去。开发人员之用将生成的配置文件拷贝到相应的目录即可,那么开发人员可以把更多的精力投入在复杂业务逻辑和技术攻关里面。
2.可以让项目做的更统一,因为生成的后台代码和前台代码是统一的,界面也是统一的,那么项目就是统一的风格,不会出现这个人的界面是一样,其他人又是另一样。
3.可以节约单元测试,系统测试的成本,不用局限于测一些共性,简单的功能。

但是这个生成工具是以一个稳定的开发框架和一套界面标准为基础的。

在下一版本,我将做以下修改。
1.增加xml数据源和json数据源(目前是数据表 或者po)
2.将框架的模板,代码和 业务数据分开。(这是个大的工作量),这样可以适应各个不同的开发框架。
3.加上预览的功能,主要是预览界面的布局。
4.加上高级布局功能,让布局更加灵活。

希望大家对我这个生成工具多多提些建议,我想3月初就在公司里投入使用。
分享到:
评论
55 楼 抛出异常的爱 2008-03-06  
hfwguitar 写道
abcx 写道

我说的是现在很多系统设计的最终产物就是一堆数据库表,不是说用代码生成器生成表。
至于你说的Eclipse plugin,我觉得意义并不大,顶多算一个过渡解决方案,不要说plugin了,看看JBuilder,当初对struts 1和EJB 2支持很好,代码生成相当好,但又有什么用呢,框架的升级直接导致代码生成器无用武之地,因为框架是high level的,而代码生成器却试图在low level层面上去解决问题

所谓的人性化和逻辑严密,就是要深刻分析业务需求才能做到人性化,逻辑严密是指重视系统的设计,在设计层面尽可能多地解决问题,系统是一个有机的整体,而不是分散在各处的CRUD。


我很同意ls的说法,如果要保持和框架一样的发展速度是太耗力气了。

首先把lisp的运行能力再提高些...
54 楼 hfwguitar 2008-03-06  
abcx 写道

我说的是现在很多系统设计的最终产物就是一堆数据库表,不是说用代码生成器生成表。
至于你说的Eclipse plugin,我觉得意义并不大,顶多算一个过渡解决方案,不要说plugin了,看看JBuilder,当初对struts 1和EJB 2支持很好,代码生成相当好,但又有什么用呢,框架的升级直接导致代码生成器无用武之地,因为框架是high level的,而代码生成器却试图在low level层面上去解决问题

所谓的人性化和逻辑严密,就是要深刻分析业务需求才能做到人性化,逻辑严密是指重视系统的设计,在设计层面尽可能多地解决问题,系统是一个有机的整体,而不是分散在各处的CRUD。


我很同意ls的说法,如果要保持和框架一样的发展速度是太耗力气了。
53 楼 abcx 2008-03-06  
惊鸿逝水 写道
abcx 写道
如果你认为企业应用就是面向数据库的CRUD,如果你认为设计的成果就是建一些数据库表,那就做你的代码生成器吧。


呵呵,只是建表? 我还真没见过这么简单的所谓代码生成器?
从另一个角度来说,很多Eclipse Plugin就是代码生成器,它有一套完整的UI体系和模板功能!这些也是所谓的“垃圾”吗?

另外,我并不认为所谓的“企业级”的应用逻辑有多么复杂,诸如银行、电信系统,大多功能模块是做管理维护,只有一些核心处理模块,才需要非常严密的逻辑处理,如业务流程的自动化,规则的自动匹配,分析统计等等

要指出的是,代码生成器生成的代码并不意味是重复代码!


我说的是现在很多系统设计的最终产物就是一堆数据库表,不是说用代码生成器生成表。
至于你说的Eclipse plugin,我觉得意义并不大,顶多算一个过渡解决方案,不要说plugin了,看看JBuilder,当初对struts 1和EJB 2支持很好,代码生成相当好,但又有什么用呢,框架的升级直接导致代码生成器无用武之地,因为框架是high level的,而代码生成器却试图在low level层面上去解决问题。

所谓的人性化和逻辑严密,就是要深刻分析业务需求才能做到人性化,逻辑严密是指重视系统的设计,在设计层面尽可能多地解决问题,系统是一个有机的整体,而不是分散在各处的CRUD。
52 楼 wenbin151 2008-03-06  
我也一直在写一个GUI代码生成器,但是我的生成器是基于liferay这个框架的,读取数据库表结构生成一些portlet的CRUD,和一些不需要数据库的portlet。
51 楼 suwu 2008-03-06  
esk_erp 写道
我也做过类似的工具,可以说这种工具非常有用的.
对于一个简单的增删改查模块,确实能减少很多的时间.

有例子为证,我做的一个产品,只用了短短两个月时间.功能还是很多的.
为了避免广告嫌疑,不贴出演示地址.

我和楼主的思路大致类似,从powerdesign中读取数据,通过模板文件,生成jsp,action,manager,配置文件.
一些JS验证也可以完成的.因为,大多数的模块功能基本相同,只是字段不同而已. 即便是资源文件,也可以很容易生成.


我也有写过代码生成器,我的思路是用fmpp 从powerdesign中的物理模型文件直接提取数据,再结合freemarker模板,来生成相应代码,效果还是挺好的。在固定的框架下,确实是有很多帮助。

且模板编写很简单。并且能用于其它语言项目的生成。
目前我是用php的,来生成zend framework框架的代码。


50 楼 差沙 2008-03-06  
反对代码生成的同学,请理解什么是“脚手架”,顺便看看ROR
49 楼 惊鸿逝水 2008-03-06  
abcx 写道
如果你认为企业应用就是面向数据库的CRUD,如果你认为设计的成果就是建一些数据库表,那就做你的代码生成器吧。


呵呵,只是建表? 我还真没见过这么简单的所谓代码生成器?
从另一个角度来说,很多Eclipse Plugin就是代码生成器,它有一套完整的UI体系和模板功能!这些也是所谓的“垃圾”吗?

另外,我并不认为所谓的“企业级”的应用逻辑有多么复杂,诸如银行、电信系统,大多功能模块是做管理维护,只有一些核心处理模块,才需要非常严密的逻辑处理,如业务流程的自动化,规则的自动匹配,分析统计等等

要指出的是,代码生成器生成的代码并不意味是重复代码!
48 楼 sunarrow 2008-03-06  
对代码生成不感兴趣
本身比较厌烦垃圾代码和重复代码,代码生成产生的代码基本上是垃圾代码和重复代码。

更喜欢通用与重用的代码
比较支持eivenchan的作法
47 楼 jomper 2008-03-06  
esk_erp 写道
我也做过类似的工具,可以说这种工具非常有用的.
对于一个简单的增删改查模块,确实能减少很多的时间.

有例子为证,我做的一个产品,只用了短短两个月时间.功能还是很多的.
为了避免广告嫌疑,不贴出演示地址.

我和楼主的思路大致类似,从powerdesign中读取数据,通过模板文件,生成jsp,action,manager,配置文件.
一些JS验证也可以完成的.因为,大多数的模块功能基本相同,只是字段不同而已. 即便是资源文件,也可以很容易生成.


类似这种量产的项目,就好像把以前的拿过来改改然后再卖个价钱。如果你们的工作都是做这种事情我也无话可说。
46 楼 abcx 2008-03-06  
如果你认为企业应用就是面向数据库的CRUD,如果你认为设计的成果就是建一些数据库表,那就做你的代码生成器吧。
45 楼 esk_erp 2008-03-05  
我也做过类似的工具,可以说这种工具非常有用的.
对于一个简单的增删改查模块,确实能减少很多的时间.

有例子为证,我做的一个产品,只用了短短两个月时间.功能还是很多的.
为了避免广告嫌疑,不贴出演示地址.

我和楼主的思路大致类似,从powerdesign中读取数据,通过模板文件,生成jsp,action,manager,配置文件.
一些JS验证也可以完成的.因为,大多数的模块功能基本相同,只是字段不同而已. 即便是资源文件,也可以很容易生成.
44 楼 bei79 2008-03-05  
Ibatis提供了这样的工具包的: Abator.

它可以以数据表为起点生成相应的POJO, DAO, 和SQL MAP.

官网: http://ibatis.apache.org/tools.html

个人用过后感觉良好. 推荐下.
43 楼 Sing 2008-03-05  
代码生器的思路是好的,我们公司用的是基于模型驱动的代码生成器,自己规定了一套比较简单的描述语言,以列表为例,描述显示哪些例,如何排序等等,生成器进行解析,然后生成.
大约能够提高4倍的工作效率,稳定性能提高10倍左右.
在人员方面,要求大大降低,以前,刚刚参加工作的程序员,是肯定做不出来的,而现在,只要了解一点数据库,了解了业务就可以描述模型,就可以生成非常漂亮的界面,其中包括异常,校验等,都已经包括了,所以用起来非常非常方便.
代码生成这一块主要在表单和展现这一块,再配合上工作流,配合上报表,基本上可以搞定大部分的mis项目.

后来,我总结了一下,用我们的模型驱动的代码生成器,其实就是在特定的环节开放,进行控制,不让你随便编程,要做一件事情,就要按照一个模式去做,最终,统一了代码风格,而且我觉得,一次性的代码生成器,不如反复使用的代码生成器好用,生成的代码如果手工改动以后,是非常麻烦的事情.
42 楼 KingLeung 2008-03-05  
期待lz开源
41 楼 simplechinese 2008-03-05  
再优秀再良好的设计模式或语言的动态性,也会有重复代码的存在,我觉得与代码生成不冲突,ls哪位说的,做java的都有过做生成的冲动,不错,以前大都是写脚本,啪啦啪啦一执行,代码出来了,耦和框架比较紧密,不具有通用性。耦和框架紧密也是无可奈何的事,引用sybase亚洲高管一句话:“代码生成目前在美国大学或学术届仍还是研究课题”。当然这里指的必然不是我们说的如此简要的代码生成...这是一个方向...我们现在所有的最优意义的事还是在自己的公司里结合好自己的业务,应用好代码生成,框架级的重构是公司短时不能接受的,在基本稳定的框架下,耦和框架的代码生成还是有一定意义的。

当然,代码生成不局限于形式,有无UI均可,有UI的话cs/bs都可有自己的实现方式,不过BS可能实现更为复杂要结合RIA来做,总之还是看精力和有无必要来实现UI,我建议还是适度原则...关键还在于通用性,要解耦,要升级为平台...试问这样的实现有哪位同仁正在致力于吗?
40 楼 jomper 2008-03-05  
"我认为楼主与其精心设计代码生成,不如设计自己的框架,比如BaseAction、BaseService等,应该首先通过语言的动态性和一些设计模式解决和业务不是很相关的重复劳动,而不是优先考虑代码生成。"

ls说的我非常的赞成!
39 楼 icewubin 2008-03-05  
seele 写道
和你怎么说不明白呢?在一个复杂的企业应用里面,是极少有纯的CRUD代码的。你在添加一个User的时候,难道不用去校验其用户名是否已经重复,就直接save进数据库了?对于每个表,CRUD的逻辑都不一样,你的代码生成有甚么意义?

基础代码的含义是针对框架的简单封装,具体的业务逻辑开发需要的则是大量的业务分析和单元测试,这恰恰都是一个软件和核心,迷信甚么代码生成的,我敢说,写出来的代码多数都是无法满足严格的单元测试的。


引用这个大哥写的话,CRUD是对单对象最基本的操作,而你说的校验的,就是属于业务层面了...把职责分配给合适的对象来操作,才是面向对象的精髓

CRUD在绝大多数情况下就是要和业务层面发生关系的,写代码就是应该写业务代码,和业务代码无关的尽量利用各种成熟的框架来完成,一定要说基本的CRUD么,现在单Dao设计很多的,大可参考以下。
基于楼主的做法,我认为是主要减少重复的和业务代码无关的工作,比如事务处理和ORM映射都是靠主流框架来简化工作的,代码生成只是解决了一些命名规范和楼主认为的最佳实践的内容。
我认为楼主与其精心设计代码生成,不如更好的设计自己的框架,比如BaseAction、BaseService等,应该首先通过语言的动态性和一些设计模式解决和业务不是很相关的重复劳动,而不是优先考虑代码生成。

从技术上来讲,代码生成和C++的模板编程的区别不大,属于预编译的过程,是不如语言级别上提供的动态性。我这段话讲的有点晦涩,举个例子:以前我们可以利用各种代码生成工具自上而下或自下而上的生成pojo和对应hbm配置文件,但是Hibernate3在JDK1.5提供的(动态)特性下,实现了元数据标注就不再需要这些代码生成的工具,其实对Hibernate来说它只是要知道领域和数据库的关系信息而已,以前的XML也只是存储这个关系信息的载体。
综上所诉,抛砖引玉,不要再在代码生成上花太多精力,说到底只是个预编译的过程。他所能解决的问题,用其他方式能解决得更好。
38 楼 chengren 2008-03-05  
嗯,基本上做java的都干过类似的事儿。。。。
在一定时期会有一些作用。。。
不过只在某个特定的时期内。。。
之后就是。。。
算了。。。
鼓励楼主一下,按照自己想做的事情去做吧。
37 楼 manmoon 2008-03-05  
每个程序员估计曾经都有这个想法,并且也行动过,我记得以前有个同事也写了个。
但是有一点你要清楚,基本上不可能把业务逻辑通用地抽象出来。
36 楼 kenvin9 2008-03-05  
我的代码器生成的代码 http://61.145.212.201:8080/hr/employeePersonnelBasicInformation.do

更多http://61.145.212.201:8080/hr/login.do?field(color)=CCDFE0&field(user)=ernie


双击grid可以进入明细编辑状态和操作相关子记录

所有前台和后台代码都是根据数据库自动生成,如果数据库已经建好,无需人工干预,100多个表可以在2分钟之内生成所有代码,并可以立即发布运行。

相关推荐

    一套Vue代码五端可用H5小程序PC苹果App安卓App使用mpvue实现小程序weex打包APP

    4. **Weex**: Weex 是阿里巴巴开源的一个跨平台UI框架,它可以让开发者用一套代码实现原生移动应用、Web应用和H5应用。Weex 支持Vue.js语法,可以方便地将Vue.js项目转换为iOS和Android原生应用。 5. **跨平台开发*...

    cdst ssh代码生成器,是有我爱神州大地网站开发的一套以web平台的,免费的,功能强悍的struts2+spring2.5+hibernate3.2的一套 代码生成系统。

    CDST SSH代码生成器是基于Web的开源工具,由我爱神州大地网站设计并开发,其主要目的是为了提高开发效率,减少重复性编码工作。这个系统利用了强大的MVC框架Struts2、依赖注入框架Spring2.5以及对象关系映射工具...

    基于mybatisplus的在线代码生成工具

    而基于MybatisPlus的在线代码生成工具,则是进一步提升了开发体验,帮助开发者快速生成项目所需的Java实体类、Mapper接口、Mapper XML 文件以及Service与Controller层代码。 **核心特性** 1. **内存数据库存储**: ...

    MFC代码生成工具MFC代码生成工具MFC代码生成工具

    MFC代码生成工具则是为了帮助开发者快速构建基于MFC的应用程序,减少手动编写重复性代码的时间,提高开发效率。 MFC本身是建立在Win32 API之上的,它将复杂的Win32 API封装成了一组类,使得开发者可以使用面向对象...

    代码生成工具设计(草案)

    5. **集成能力**:理想的代码生成工具应能无缝集成到开发环境(IDE)中,例如,提供插件形式的支持,使开发者在编写代码的过程中可以方便地调用生成功能。 6. **版本控制**:生成的代码通常需要纳入版本控制系统,...

    代码生成工具

    代码生成工具是软件开发过程中非常重要的辅助工具,尤其在Java开发领域中,它们可以极大地提高开发效率,减少重复劳动。本文将深入探讨代码生成工具及其在Java编程中的应用。 首先,我们来理解什么是代码生成工具。...

    java代码自动生成工具

    通过代码生成工具,可以自动化创建Controller、Service、DAO、Model等类,以及相应的接口和实现,大大减轻了开发工作量。 Java代码自动生成工具的核心功能包括: 1. **模板引擎**:这些工具通常配备了一套强大的...

    jpa代码自动生成工具-springboot

    本文将深入探讨如何使用JPA和Spring Boot结合,实现代码自动生成工具,提高开发效率。 首先,让我们了解JPA。JPA通过提供一套标准API,使得开发者无需关注底层SQL语句,而是通过定义实体类、注解以及Repository接口...

    webservice接口代码生成工具

    总之,"webservice接口代码生成工具"简化了Web Service客户端的开发,使得开发者能够快速地与远程服务进行交互,而不必关心底层的通信细节。通过理解和利用这样的工具,可以提高开发效率,同时确保与Web Service的...

    飞思卡尔 的osek代码生成工具

    飞思卡尔的OSEK代码生成工具是专为开发人员设计的,目的是简化基于OSEK规范的嵌入式软件开发过程。这个工具能够帮助开发者自动生成符合OSEK标准的源代码,包括任务调度、中断处理、通信机制等方面,从而提高开发效率...

    一套基于模版的代码生成器

    【标题】:“基于模板的代码生成器”是一种实用的开发工具,它允许开发者通过定义模板文件来自动化地创建各种编程语言的源代码。这种工具在软件工程中扮演着重要角色,尤其是在大型项目或需要大量重复代码的情况下,...

    C#.Net实体代码生成工具 v3.0 (20090830最新版)

    C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】是一款专门为 C#.Net 数据库程序员开发量身定做的自动代码生成工具,所生成的代码基于面向对象的思想、分层架构设计及ORM,并参考了微软Petshop中经典的思想,...

    freemaker代码生成工具

    总的来说,Freemarker代码生成工具通过模板化的方式,为Java开发带来了极大的便利,降低了开发成本,提高了代码的规范性和一致性。对于大型项目或团队开发来说,这样的自动化工具是不可或缺的,它可以确保代码质量并...

    mybatis 代码生成工具

    MyBatis 代码生成工具是开发过程中非常实用的辅助软件,它可以显著提高开发效率,减少重复劳动,使得开发者能够更专注于业务逻辑的实现。MyBatis 提供的代码生成器可以根据数据库表结构自动生成对应的 Java 模型类、...

    code-gen代码生成工具 v2.0.0.zip

    "code-gen代码生成工具 v2.0.0.zip" 是一个专用于自动化代码生成的工具,主要用于提升开发效率,减少重复编码工作。该版本为2.0.0,可能包含了新特性和性能优化。在软件工程领域,代码生成工具是开发者们常用的辅助...

    JAVA代码生成工具.rar

    总的来说,"JAVA代码生成工具.rar"可能包含了一款或一套这样的工具,它将帮助Java开发者更加高效、规范地进行编码,提升整体项目的质量和开发效率。如果你正在寻找提高开发效率的方法,了解并合理使用代码生成工具是...

    mybatis自动代码生成工具(映射mysql,oracle)

    MyBatis 自动代码生成工具是一款高效且便捷的开发辅助软件,它可以帮助开发者快速生成 MyBatis 的 Mapper 文件、实体类、DAO 接口及其实现类等代码,极大地提高了开发效率,尤其在处理大量的数据库表结构时。...

    代码生成工具easycode

    【代码生成工具EasyCode】是一种高效实用的软件开发辅助工具,专为程序员设计,旨在减少重复的手动编码工作,提高开发效率。通过自动化的方式,它能够根据预设的模板或模型自动生成符合特定规范的代码,包括但不限于...

    java代码生成工具

    Java代码生成工具是一种提高开发效率的重要辅助软件,它能够自动生成符合特定规范或模式的Java源代码,大大减轻了程序员的编码负担。这些工具通常基于模板或者元数据,通过解析数据库结构、ORM映射或其他配置文件,...

Global site tag (gtag.js) - Google Analytics