论坛首页 Java企业应用论坛

给做快速开发框架的人泼泼凉水

浏览 40240 次
该帖已经被评为良好帖
作者 正文
   发表时间:2008-11-03  
动态和代码生成结合起来可能比较好

框架里面用反射,proxy,cglib,asm增加动态性,可以预览快速原型,因性能要求或者需要个性化的时候再代码生成出来维护,生成的代码就不要再歧视它就行

关键还是本身的架构要好

0 请登录后投票
   发表时间:2008-11-03  
yanwt 写道
首先说明一个问题,快速开发并不一定是代码生成。
我的理解,代码生成只是帮助程序员实现一些重复的体力劳动而已(这种重复有可能是设计本身的问题),就像是很多人都喜欢用一些工具生成hibernate的映射(或注解)一样,并不是替用户解决业务逻辑问题。
至于后期扩展,维护的问题是软件架构设计的问题,这个和快速开发没什么关系。如果系统耦合度高你开发的慢也是存在上面的问题。



严重同意这位老兄的意见:快速开发并不一定是代码生成。
我们公司内部也做了一个快速开发的系统,大体的思想是这样的:
定义一套固定的XML模板
1。定义与数据库中对应的节点。
2。定义列表节点。
3。定义查询页面的元素(其中包括什么CSS文件,文本框属性什么的)。
4。定义修改,插入等页面的无素
......
然后通过JAVA程序来解析这套XML模板。
支持SQL,视图,存储过程,触发器等。
不需要写代码,也不会生成JAVA文件,你要做的就是:配置好XML文件。
有多少个模块,你就配置多少个XML文件,最后将这个文件名传过去,让相应的模块调用相应的XML文件即可。

优点:
只要你会写SQL,视图,存储过程,触发器,往里面配置一下就行;
不会生成JAVA文件,所以就不存在维护代码问题;

缺点:
由于是一个通用的模板,对于界面的排版是固定的,比如一行放两个文本框等,不那么灵活。

0 请登录后投票
   发表时间:2008-11-03  
justshare 写道

严重同意这位老兄的意见:快速开发并不一定是代码生成。
我们公司内部也做了一个快速开发的系统,大体的思想是这样的:
定义一套固定的XML模板
1。定义与数据库中对应的节点。
2。定义列表节点。
3。定义查询页面的元素(其中包括什么CSS文件,文本框属性什么的)。
4。定义修改,插入等页面的无素
......
然后通过JAVA程序来解析这套XML模板。
支持SQL,视图,存储过程,触发器等。
不需要写代码,也不会生成JAVA文件,你要做的就是:配置好XML文件。
有多少个模块,你就配置多少个XML文件,最后将这个文件名传过去,让相应的模块调用相应的XML文件即可。

优点:
只要你会写SQL,视图,存储过程,触发器,往里面配置一下就行;
不会生成JAVA文件,所以就不存在维护代码问题

缺点:
由于是一个通用的模板,对于界面的排版是固定的,比如一行放两个文本框等,不那么灵活。


赶走一只狼,引来一只虎
0 请登录后投票
   发表时间:2008-11-04  
raymond2006k 写道
很同意大家回复的观点。

我的感觉, 美国人(或者外国人)做的东西, EJB,Hibernate,Spring,.... 中国人都会虚心学习;即便有缺点,也不太会有大的反对,而会探究是否是误用。

而同样的东西,中国人做出来,首先自己都觉得怀疑;还没详细了解清楚,就挑三挑四。中国人缺的就是自信,对自己自信,对他人自信。其实,我呆过的几个公司,都有技术牛人,能做二次封装,改良,或者框架等,而且做的都很棒;如几个牛人集中起来,也能做很多框架出来。现在 javaeye上的牛人也很多啊 。

只是希望国人对他人的创新多多互相评估,试用,以建设性的态度提意见,提缺点,提改进意见。

说的好!
0 请登录后投票
   发表时间:2008-11-04  
daquan198163 写道
justshare 写道

严重同意这位老兄的意见:快速开发并不一定是代码生成。
我们公司内部也做了一个快速开发的系统,大体的思想是这样的:
定义一套固定的XML模板
1。定义与数据库中对应的节点。
2。定义列表节点。
3。定义查询页面的元素(其中包括什么CSS文件,文本框属性什么的)。
4。定义修改,插入等页面的无素
......
然后通过JAVA程序来解析这套XML模板。
支持SQL,视图,存储过程,触发器等。
不需要写代码,也不会生成JAVA文件,你要做的就是:配置好XML文件。
有多少个模块,你就配置多少个XML文件,最后将这个文件名传过去,让相应的模块调用相应的XML文件即可。

优点:
只要你会写SQL,视图,存储过程,触发器,往里面配置一下就行;
不会生成JAVA文件,所以就不存在维护代码问题

缺点:
由于是一个通用的模板,对于界面的排版是固定的,比如一行放两个文本框等,不那么灵活。


赶走一只狼,引来一只虎

严重同意
0 请登录后投票
   发表时间:2008-11-04  
sphenx 写道
sphenx 写道
jindw 写道
这里我倒是看到了xml和annotation之间有一个代码生成的需求。

annotation最大的好处是,IDE语法检查,重构非常友好。
代码紧凑,同一个事情不必不同文件间反复跳转。

这对开发非常有利。

但是一到实施就麻烦了,不要我改一点配置就重新编译吧。

hibernate 有自己的官方annotation2xml转换工具,其他的呢?webwork,spring这方面有没有工具支持?


用xml还是annotation的关键是,你的配置指定的属性到底是依赖于环境还是依赖于自己
1. xml是用于做外部资源指定的,它会随环境变化而变化。如,用xml指定连接的数据库的属性。
2. annotation是用来指定自身属性的,它只随自身的变化而变化。 如,用annotation指定一个bean是否是serializable。


如果在第一种情况下用annotation,显然有害无益;反之也一样。所以,xml和annotation各有优缺点,各有擅长。一味的用xml或一味的用annotation,都有问题。

xml重用性强,annotation方便、可读性强。
0 请登录后投票
   发表时间:2008-11-04  
icewubin 写道
amonlei 写道
yuzhu712 写道
你开个软件公司就明白了 利润,成本,时间是最重要的,甚至超越了质量...

开玩笑,没有质量,哪来的利润?靠忽悠?

您说对了,大部分的政府项目就是这样的。

说具体点就是,当某个政府领导发现有三家乙方的质量是差不多的(即使真的有上下,不等于这个领导有能力分辨出来),这个时候就看谁关系硬,谁更能忽悠。

至于回扣等其他黑幕我就不一一列举了。

政府项目 = 软件项目???政府项目又如何?我也是做政府项目出身的,每天死一次机看看你的公司还要不要开。。不要以点盖面。。。。
0 请登录后投票
   发表时间:2008-11-04  
jindw 写道
fireflyc 写道

一种,减少代码量。
第二种,代码生成技术。
。。。。

总结的非常不错。
关于第一种情况,主要是框架乃至编程语言的改进。能做到这点当能是最好。

但是现实中我们往往只能退而求其次。我们往往是游走在不同的第三方框架提供的服务中,比如说我们用hibernate,用spring,用webwork,而他们是相互独立的系统,我们只是在他们的狭缝中游走,代码生成在这里也就成了一中可选的黏合剂。


“黏合剂”这个词用的不错 在利用第三方框架的时候,关于配置及一些类的生成确实是无聊枯燥的,借助代码生成器生成,也许是最省心省力的了,呵呵
0 请登录后投票
   发表时间:2008-11-04   最后修改:2008-11-04
yuzhu712 写道
你开个软件公司就明白了 利润,成本,时间是最重要的,甚至超越了质量...

没有金钢钻就别揽瓷器活儿,只重质量不计成本者和只计成本不讲质量者,结局是一样的。但,最终目标的实现,还应该是建立在质量的基础上。如果忘了这一点,那么看看三鹿的结局就知道该如何选择了。楼上有朋友说如果你的项目中需要代码生成器,那么说明你的设计是有问题的(我并不知道这个说法是否成立,但其精神值得学习),同样,如果你需要追求成本降低,以"维持"生存,那说明你的选择也是有问题的。
0 请登录后投票
   发表时间:2008-11-04   最后修改:2008-11-04
amonlei 写道
icewubin 写道
amonlei 写道
yuzhu712 写道
你开个软件公司就明白了 利润,成本,时间是最重要的,甚至超越了质量...

开玩笑,没有质量,哪来的利润?靠忽悠?

您说对了,大部分的政府项目就是这样的。

说具体点就是,当某个政府领导发现有三家乙方的质量是差不多的(即使真的有上下,不等于这个领导有能力分辨出来),这个时候就看谁关系硬,谁更能忽悠。

至于回扣等其他黑幕我就不一一列举了。

政府项目 = 软件项目???政府项目又如何?我也是做政府项目出身的,每天死一次机看看你的公司还要不要开。。不要以点盖面。。。。


我说“发现有三家乙方的质量是差不多”,意思是指,竞标的时候,这三家的质量基本没问题,可能已经是第二轮或第三轮了。每天死一次机的厂家当然不会入围这里说的最后三家。

深层意思是指,很多场合,竞争对手总是存在的,即使竞争对手产品质量有好有坏(不至于每天死一次机的那种),但是都是过了竞标的底线,这时候如果对决定最后竞标优胜者的权重排序的话,排第一的多半不再是质量了。质量仅仅是两个竞争对手之间互相博弈时的一张牌,对某家公司来说,往往并不需要质量上一定要短时间内赶超对手,可以在服务和价格上争取更多的优势,当然还有我之前说的各种黑幕,这些都是博弈的筹码而已。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics