锁定老帖子 主题:给做快速开发框架的人泼泼凉水
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-11-03
动态和代码生成结合起来可能比较好
框架里面用反射,proxy,cglib,asm增加动态性,可以预览快速原型,因性能要求或者需要个性化的时候再代码生成出来维护,生成的代码就不要再歧视它就行 关键还是本身的架构要好 |
|
返回顶楼 | |
发表时间:2008-11-03
yanwt 写道 首先说明一个问题,快速开发并不一定是代码生成。
我的理解,代码生成只是帮助程序员实现一些重复的体力劳动而已(这种重复有可能是设计本身的问题),就像是很多人都喜欢用一些工具生成hibernate的映射(或注解)一样,并不是替用户解决业务逻辑问题。 至于后期扩展,维护的问题是软件架构设计的问题,这个和快速开发没什么关系。如果系统耦合度高你开发的慢也是存在上面的问题。 严重同意这位老兄的意见:快速开发并不一定是代码生成。 我们公司内部也做了一个快速开发的系统,大体的思想是这样的: 定义一套固定的XML模板 1。定义与数据库中对应的节点。 2。定义列表节点。 3。定义查询页面的元素(其中包括什么CSS文件,文本框属性什么的)。 4。定义修改,插入等页面的无素 ...... 然后通过JAVA程序来解析这套XML模板。 支持SQL,视图,存储过程,触发器等。 不需要写代码,也不会生成JAVA文件,你要做的就是:配置好XML文件。 有多少个模块,你就配置多少个XML文件,最后将这个文件名传过去,让相应的模块调用相应的XML文件即可。 优点: 只要你会写SQL,视图,存储过程,触发器,往里面配置一下就行; 不会生成JAVA文件,所以就不存在维护代码问题; 缺点: 由于是一个通用的模板,对于界面的排版是固定的,比如一行放两个文本框等,不那么灵活。 |
|
返回顶楼 | |
发表时间:2008-11-03
justshare 写道 严重同意这位老兄的意见:快速开发并不一定是代码生成。 我们公司内部也做了一个快速开发的系统,大体的思想是这样的: 定义一套固定的XML模板 1。定义与数据库中对应的节点。 2。定义列表节点。 3。定义查询页面的元素(其中包括什么CSS文件,文本框属性什么的)。 4。定义修改,插入等页面的无素 ...... 然后通过JAVA程序来解析这套XML模板。 支持SQL,视图,存储过程,触发器等。 不需要写代码,也不会生成JAVA文件,你要做的就是:配置好XML文件。 有多少个模块,你就配置多少个XML文件,最后将这个文件名传过去,让相应的模块调用相应的XML文件即可。 优点: 只要你会写SQL,视图,存储过程,触发器,往里面配置一下就行; 不会生成JAVA文件,所以就不存在维护代码问题; 缺点: 由于是一个通用的模板,对于界面的排版是固定的,比如一行放两个文本框等,不那么灵活。 赶走一只狼,引来一只虎 |
|
返回顶楼 | |
发表时间:2008-11-04
raymond2006k 写道 很同意大家回复的观点。
我的感觉, 美国人(或者外国人)做的东西, EJB,Hibernate,Spring,.... 中国人都会虚心学习;即便有缺点,也不太会有大的反对,而会探究是否是误用。 而同样的东西,中国人做出来,首先自己都觉得怀疑;还没详细了解清楚,就挑三挑四。中国人缺的就是自信,对自己自信,对他人自信。其实,我呆过的几个公司,都有技术牛人,能做二次封装,改良,或者框架等,而且做的都很棒;如几个牛人集中起来,也能做很多框架出来。现在 javaeye上的牛人也很多啊 。 只是希望国人对他人的创新多多互相评估,试用,以建设性的态度提意见,提缺点,提改进意见。 说的好! |
|
返回顶楼 | |
发表时间:2008-11-04
daquan198163 写道 justshare 写道 严重同意这位老兄的意见:快速开发并不一定是代码生成。 我们公司内部也做了一个快速开发的系统,大体的思想是这样的: 定义一套固定的XML模板 1。定义与数据库中对应的节点。 2。定义列表节点。 3。定义查询页面的元素(其中包括什么CSS文件,文本框属性什么的)。 4。定义修改,插入等页面的无素 ...... 然后通过JAVA程序来解析这套XML模板。 支持SQL,视图,存储过程,触发器等。 不需要写代码,也不会生成JAVA文件,你要做的就是:配置好XML文件。 有多少个模块,你就配置多少个XML文件,最后将这个文件名传过去,让相应的模块调用相应的XML文件即可。 优点: 只要你会写SQL,视图,存储过程,触发器,往里面配置一下就行; 不会生成JAVA文件,所以就不存在维护代码问题; 缺点: 由于是一个通用的模板,对于界面的排版是固定的,比如一行放两个文本框等,不那么灵活。 赶走一只狼,引来一只虎 严重同意 |
|
返回顶楼 | |
发表时间: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方便、可读性强。 |
|
返回顶楼 | |
发表时间:2008-11-04
icewubin 写道 amonlei 写道 yuzhu712 写道 你开个软件公司就明白了 利润,成本,时间是最重要的,甚至超越了质量...
开玩笑,没有质量,哪来的利润?靠忽悠? 您说对了,大部分的政府项目就是这样的。 说具体点就是,当某个政府领导发现有三家乙方的质量是差不多的(即使真的有上下,不等于这个领导有能力分辨出来),这个时候就看谁关系硬,谁更能忽悠。 至于回扣等其他黑幕我就不一一列举了。 政府项目 = 软件项目???政府项目又如何?我也是做政府项目出身的,每天死一次机看看你的公司还要不要开。。不要以点盖面。。。。 |
|
返回顶楼 | |
发表时间:2008-11-04
jindw 写道 fireflyc 写道 一种,减少代码量。 第二种,代码生成技术。 。。。。 总结的非常不错。 关于第一种情况,主要是框架乃至编程语言的改进。能做到这点当能是最好。 但是现实中我们往往只能退而求其次。我们往往是游走在不同的第三方框架提供的服务中,比如说我们用hibernate,用spring,用webwork,而他们是相互独立的系统,我们只是在他们的狭缝中游走,代码生成在这里也就成了一中可选的黏合剂。 “黏合剂”这个词用的不错 在利用第三方框架的时候,关于配置及一些类的生成确实是无聊枯燥的,借助代码生成器生成,也许是最省心省力的了,呵呵 |
|
返回顶楼 | |
发表时间:2008-11-04
最后修改:2008-11-04
yuzhu712 写道 你开个软件公司就明白了 利润,成本,时间是最重要的,甚至超越了质量...
没有金钢钻就别揽瓷器活儿,只重质量不计成本者和只计成本不讲质量者,结局是一样的。但,最终目标的实现,还应该是建立在质量的基础上。如果忘了这一点,那么看看三鹿的结局就知道该如何选择了。楼上有朋友说如果你的项目中需要代码生成器,那么说明你的设计是有问题的(我并不知道这个说法是否成立,但其精神值得学习),同样,如果你需要追求成本降低,以"维持"生存,那说明你的选择也是有问题的。 |
|
返回顶楼 | |
发表时间:2008-11-04
最后修改:2008-11-04
amonlei 写道 icewubin 写道 amonlei 写道 yuzhu712 写道 你开个软件公司就明白了 利润,成本,时间是最重要的,甚至超越了质量...
开玩笑,没有质量,哪来的利润?靠忽悠? 您说对了,大部分的政府项目就是这样的。 说具体点就是,当某个政府领导发现有三家乙方的质量是差不多的(即使真的有上下,不等于这个领导有能力分辨出来),这个时候就看谁关系硬,谁更能忽悠。 至于回扣等其他黑幕我就不一一列举了。 政府项目 = 软件项目???政府项目又如何?我也是做政府项目出身的,每天死一次机看看你的公司还要不要开。。不要以点盖面。。。。 我说“发现有三家乙方的质量是差不多”,意思是指,竞标的时候,这三家的质量基本没问题,可能已经是第二轮或第三轮了。每天死一次机的厂家当然不会入围这里说的最后三家。 深层意思是指,很多场合,竞争对手总是存在的,即使竞争对手产品质量有好有坏(不至于每天死一次机的那种),但是都是过了竞标的底线,这时候如果对决定最后竞标优胜者的权重排序的话,排第一的多半不再是质量了。质量仅仅是两个竞争对手之间互相博弈时的一张牌,对某家公司来说,往往并不需要质量上一定要短时间内赶超对手,可以在服务和价格上争取更多的优势,当然还有我之前说的各种黑幕,这些都是博弈的筹码而已。 |
|
返回顶楼 | |