论坛首页 入门技术论坛

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

浏览 43316 次
该帖已经被评为新手帖
作者 正文
   发表时间:2008-03-04  
抛出异常的爱 写道
abcx 写道
如果你在架构设计和编程方面不是很牛,请不要尝试做这样的事,更多的时候你做出来的是垃圾。

牛这个词是贬义.....
能够节约劳动...就是好东西..
垃圾大多是由于懒人不去改进.....


严重同意。
0 请登录后投票
   发表时间:2008-03-04  
abcx 写道
抛出异常的爱 写道
abcx 写道
如果你在架构设计和编程方面不是很牛,请不要尝试做这样的事,更多的时候你做出来的是垃圾。

牛这个词是贬义.....
能够节约劳动...就是好东西..
垃圾大多是由于懒人不去改进.....


首先代码生成器的存在是因为有大量重复冗余的代码存在,这就是一个设计上的问题了,应该从设计入手,同时选择高效的框架和技术,自然就可以消除冗余代码,剩下的代码都是业务逻辑代码,业务逻辑代码是用代码生成器就可以生成的吗?
还有一个严重的问题就是维护问题,谁来理解和升级你的框架,还有那一大堆你的框架生成的代码,需求变了,这些代码该怎么变?

先把手里的活干了再说别的.
0 请登录后投票
   发表时间:2008-03-04  
abcx 写道
抛出异常的爱 写道
abcx 写道
如果你在架构设计和编程方面不是很牛,请不要尝试做这样的事,更多的时候你做出来的是垃圾。

牛这个词是贬义.....
能够节约劳动...就是好东西..
垃圾大多是由于懒人不去改进.....


首先代码生成器的存在是因为有大量重复冗余的代码存在,这就是一个设计上的问题了,应该从设计入手,同时选择高效的框架和技术,自然就可以消除冗余代码,剩下的代码都是业务逻辑代码,业务逻辑代码是用代码生成器就可以生成的吗?
还有一个严重的问题就是维护问题,谁来理解和升级你的框架,还有那一大堆你的框架生成的代码,需求变了,这些代码该怎么变?


不是完全同意,需要代码生成器的地方可能有:
1)系统每个模块可能都需要相同的处理逻辑功能,比如CURD操作,生成模板化的展示页面
2)为了简化开发的工作量,生成模板化的代码,只要添加少量的逻辑实现,就形成可运行的系统雏形
3)为了统一项目的包命名规范、类命名规划、代码结构,形成一致的编码风格

可以说,再优秀的框架和技术,一旦工作量上来了,在人员参差不齐的情况下,代码生成器还是非常便捷的。
对于需求的变更,通常是属于业务层次的,我想既然是一个架构平台,又岂能不剥离业务?

另外,说到框架的维护问题,不管你是采用自己的,还是开源的都是需要面对这个问题,无可逃避!
0 请登录后投票
   发表时间:2008-03-04  
重构系统是要钱与时间的.
大部分公司是不会给你时间与金钱的.
0 请登录后投票
   发表时间:2008-03-05  
抛出异常的爱 写道
abcx 写道
如果你在架构设计和编程方面不是很牛,请不要尝试做这样的事,更多的时候你做出来的是垃圾。

牛这个词是贬义.....
能够节约劳动...就是好东西..
垃圾大多是由于懒人不去改进.....

行万里路,始与足下。懒人终究会失败的。
0 请登录后投票
   发表时间:2008-03-05  
惊鸿逝水 写道
abcx 写道
抛出异常的爱 写道
abcx 写道
如果你在架构设计和编程方面不是很牛,请不要尝试做这样的事,更多的时候你做出来的是垃圾。

牛这个词是贬义.....
能够节约劳动...就是好东西..
垃圾大多是由于懒人不去改进.....


首先代码生成器的存在是因为有大量重复冗余的代码存在,这就是一个设计上的问题了,应该从设计入手,同时选择高效的框架和技术,自然就可以消除冗余代码,剩下的代码都是业务逻辑代码,业务逻辑代码是用代码生成器就可以生成的吗?
还有一个严重的问题就是维护问题,谁来理解和升级你的框架,还有那一大堆你的框架生成的代码,需求变了,这些代码该怎么变?


不是完全同意,需要代码生成器的地方可能有:
1)系统每个模块可能都需要相同的处理逻辑功能,比如CURD操作,生成模板化的展示页面
2)为了简化开发的工作量,生成模板化的代码,只要添加少量的逻辑实现,就形成可运行的系统雏形
3)为了统一项目的包命名规范、类命名规划、代码结构,形成一致的编码风格

可以说,再优秀的框架和技术,一旦工作量上来了,在人员参差不齐的情况下,代码生成器还是非常便捷的。
对于需求的变更,通常是属于业务层次的,我想既然是一个架构平台,又岂能不剥离业务?

另外,说到框架的维护问题,不管你是采用自己的,还是开源的都是需要面对这个问题,无可逃避!

对于CRUD,还需要用代码生成器来生成吗,ORM框架完全可以完成。另外,我们开发的是富有人性化的逻辑严密的应用程序,而不是面向数据库的CRUD(不光Java代码面向数据库,UI也面向数据库)。谈到框架的维护问题,采用优秀成熟的框架,至少还有一个社区在维护这个框架,至少在你的应用程序被淘汰之前,你不用太担心框架被淘汰。
0 请登录后投票
   发表时间:2008-03-05  
其实我觉得LZ说的有点矛盾,你不是说你们公司是用的自己的框架吗?那有这么能做成产品啊,不会把你们公司的框架也做进来吧。那样的话,就需要先看看你们的框架在看你的代码生成工具了。前段时间也自己给自己做了几个代码生成的类。比较简单:是使用Hibernate生产好的值对象来生成各种java类(差:web界面生成这块)。
我觉得:代码生成工具都是比较片面的。想做成个产品太难了。每个项目都有不同的界面要求。
如果大家有需要我的代码生成类。我到可以共享。但是是C#的。嘿嘿,最近搞C#。但是编码方式都是差不多的。少量修改可就可以用了。
0 请登录后投票
   发表时间:2008-03-05  
abcx 写道

对于CRUD,还需要用代码生成器来生成吗,ORM框架完全可以完成。另外,我们开发的是富有人性化的逻辑严密的应用程序,而不是面向数据库的CRUD(不光Java代码面向数据库,UI也面向数据库)。谈到框架的维护问题,采用优秀成熟的框架,至少还有一个社区在维护这个框架,至少在你的应用程序被淘汰之前,你不用太担心框架被淘汰。


不管是不是ORM,就算是简单的DAO也可以用一条语句实现,但是面对类似的几十个的CRUD(只是表名不一样),用代码生成器选择多个表,1秒钟就帮你批量生成所谓的重复代码,总比手写有效率吧!

至于你说的富有人性化的严密逻辑,这不是什么生成器能够实现的。但不可否认,管理系统的大部分功能都是所谓的“重复”,写上10遍CRUD,做上十几个翻页的功能页面我也会觉得烦!

框架要不要采用最先进,还是最优秀的,“只买对的,不买贵的”用你最了解,最熟悉的框架吧,就算是已经淘汰的框架也有它的用武之地!另外,开源的框架最严重的问题就是兼容性,谁也不会轻易去升级一个稳定的框架(比如struts1.x 到struts2.x)!


0 请登录后投票
   发表时间:2008-03-05  
惊鸿逝水 写道

不管是不是ORM,就算是简单的DAO也可以用一条语句实现,但是面对类似的几十个的CRUD(只是表名不一样),用代码生成器选择多个表,1秒钟就帮你批量生成所谓的重复代码,总比手写有效率吧!


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

基础代码的含义是针对框架的简单封装,具体的业务逻辑开发需要的则是大量的业务分析和单元测试,这恰恰都是一个软件和核心,迷信甚么代码生成的,我敢说,写出来的代码多数都是无法满足严格的单元测试的。
0 请登录后投票
   发表时间:2008-03-05  
downpour 写道
惊鸿逝水 写道

不管是不是ORM,就算是简单的DAO也可以用一条语句实现,但是面对类似的几十个的CRUD(只是表名不一样),用代码生成器选择多个表,1秒钟就帮你批量生成所谓的重复代码,总比手写有效率吧!


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

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


你又真的明白我的意思?
赫赫,难道你添加一个User我就不能帮你生成校验代码?当你诸如这样的操作有NN个的时候,你不觉得很琐碎吗?
谁告诉你用代码生成器就可以帮你实现完整的应用呀?我只说可以帮你生成可运行的系统雏形,具体实现逻辑根据需求做修改!

单元测试和用不用代码生成器没关系!代码生成器的作用我上面说过了,不再重复。
3 请登录后投票
论坛首页 入门技术版

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