2008-07-08

为何代码生成器都要这么智能呢?

关键字: [搞不明白]
现在的代码生成器生成的代码文件都会自动插出在我们的项目中,为何不提供一个将生成的文件生成在硬盘某个目录下,再由我们手工copy回来工作区?

这样可以避免开发人员需要考虑文件会不会被覆盖的问题.并且手工的动作很快,也不容易出错.

本人编写了的一个基于数据库的代码生成器,就是要解决上面提到的问题,可以生成Hibernate Model,Dao,Manager,Struts/Struts2 Action,JSP页面(增删改查及列表页面,表单验证),以下为代码生成器相关特性
  • 以application方式运行生成器,代码即是配置.
  • 将文件系统的目录名称及文件名称作为生成器的一部分,模板文件的的名称与目录名称可以直接引用相关变量,如${basepackage}/${className}.java (${className}=Blog,则会生成Blog.java)
  • 以@testExpression结尾的模板文件为有条件忽略,如果testExpression的值在数据模型为true则生成该文件,生成的文件不会包含@testExpression,反之则不生成该文件(应用场景:用于在是否要生成hibernate联合主建的文件中)
  • 支持文件插入操作,如模板输出生成的地方已经有该同名的文件存在,并且文件中有包含"webapp-generator-insert-location"标记,则模板生成的内容会插入在该标记之后该特性对如生成的spring配置内容插入spring配置文件十分有用


生成器入口
	public static void main(String[] args) throws Exception {
		Generator g = new Generator();
		
		g.clean();
		g.generateTable("blog");
//		g.generateAllTable();
	}


这里是上一篇[搞不明白],被移至入门区了
[搞不明白]直接在Action中返回forward不好么

搞完了[搞不明白],会发布一个应用开发框架,提供类似rails的基于url确定action访问的零配置快速编程,自带一个代码生成器,已经完成的组合基于struts+spring+hibernate,struts2+spring+hibernate.
  • 340ecb90-c24e-3e6f-817d-ced6c314b315-thumb
  • 描述: 代码template目录结构
  • 大小: 18.2 KB
评论
sevenhighness 2008-09-03
貌似大部分的代码生成都局限于功能性的生成而已
超级潜水员 2008-09-02
你的rpaid-framework很好用,谢谢楼主了.
farryu 2008-09-02
bruce_luo 写道
不错,我以前也写过一个代码生成器,但是我们老大说,你这一搞,其它程序员就要失业了,我就没有继续搞下去了!

我代表我自己以及我身后千千万万个同行向你致谢了!
thc 2008-09-01
superxielei 写道
说了这么多.我还是希望能看一看这个代码生成器...
现在公司都是用自己封装的框架.这些代码生成器还有作用吗?

那正是代码生成器的市场所在 ,哈哈
bubble 2008-08-01
呵呵,像你说的那样,何必用java能,直接用js就搞定了
系统程序 2008-07-17
bruce_luo 写道
不错,我以前也写过一个代码生成器,但是我们老大说,你这一搞,其它程序员就要失业了,我就没有继续搞下去了!


联合国秘书长应该来感谢你啊,不是你做出的伟大的牺牲的话,全球的失业率不知又要增加多少
vangelee 2008-07-17
我晕,你放心不会失业的。可以看一下Grails。感觉会让你大吃一惊的!
zfyyfz 2008-07-16
别这么牛啥,即使你发明一种语言,大多程序员也不会失业!
liping 2008-07-16
我想看看你这个个代码生成器!即使失业也乐意啊!
runthu 2008-07-15
程序员太累,应该偷偷懒!
sunwine 2008-07-15
我到不怕代码生成器,因为我们做开发都不写代码。
dfedora 2008-07-15
都用了好久的。好的代码生成器可以生成很多语言的代码。无非就是模版的选择而已。CRUD操作可以直接用生成器搞定。
soleghost 2008-07-15
在公司实习的时候就发现,对于一个没有任何业务逻辑的model
从查插删改的页面-->对应的action-->manager及其实现-->dao及其实现-->model及其hibernate的xml配置文件,开发的大部分工作都是copy/paste,然后更改变量名,其实大部分都是没有任何技术和业务意义的,写一个针对公司技术框架的代码生成器,可以提高程序员的开发效率,对于公司挺好的
runthu 2008-07-15
搞过SSH的CRUD代码生成,静态编码表的操作效率是高多了,但复杂的业务逻辑还得慢慢去实现。

cuckoo framework也支持CRUD代码的自动生成。
simplechinese 2008-07-15
能不能把这个帖也移到入门区...
gladstone 2008-07-15
bruce_luo 写道
不错,我以前也写过一个代码生成器,但是我们老大说,你这一搞,其它程序员就要失业了,我就没有继续搞下去了!



失什么失,地球不留人,火星还去不得咩
pony0728 2008-07-15
可以把客户化的代码放到扩展目录。最后发布的时候去覆盖下。。
suntiance 2008-07-14
我也有过开发代码生成器的经验,暂时能想到下面这些。
问题
1、对于业务复杂的模块,代码生成器并不能显著提高效率。
2、对于熟练的程序员,代码生成器有点累赘。
3、开发一个优秀的代码生成器也是需要成本的。

优点
1、简单模块快速开发。
2、来自同一个生成器的代码比较规范,易读性强。
xfan1982 2008-07-14
fmpp+freemarker很容易做
xiaoheng 2008-07-14
没有先上面说滴那么人性化。
偶滴只用于自己开发上用,节约时间。
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

badqiu
搜索本博客
最近加入圈子
存档
最新评论