锁定老帖子 主题:深入浅出教你做一个快速开发平台
精华帖 (6) :: 良好帖 (9) :: 新手帖 (0) :: 隐藏帖 (6)
|
|
---|---|
作者 | 正文 |
发表时间:2011-11-05
最后修改:2011-11-05
仅此而已 写道 最近我也写了个快速开发的代码生成工具,action端的校验,我是通过在pojo上加自定义注解,然后用工具类解析注解,用dom4j生成相应的xml校验文件,虽然struts2本身支持注解,但是习惯了xml的配置。但是页面上的表单是最让人头疼的,也是最浪费时间的。有什么好的办法吗?我可以生成可配置的表单。有什么好的工具也行。
生成这些页面的话,要做到完善有一定的难度,我现在参与开发的这个工具也没做到生成后的页面一定可以100%达到直接可用的程度。 我说的完善是: 如果你生成的是填写资料的表单jsp页面: 1、你可以指定生成什么表单,文本框?下拉框?还是 2、生成表单后,可以对这些表单进行js验证,是email?数字?手机号码? 如果生成的是展示结果的的jsp页面: 1、要展现哪几个字段的数据 2、有些数据是否要被转换,例如,性别 1 就表示为 男,或者一些时间格式也要转换 如果要做到完善生成的页面直接可用,,有一定难度。 我目前是居于eclipse之上做了一个生成CRUD的向导,,基本上上面的因素,我都放在这个向导里面可选置。 |
|
返回顶楼 | |
发表时间:2011-11-05
泰山北斗 写道 lanjian 写道 泰山北斗 写道 就这垃圾帖也评委精华????
开发平台的核心居然是自动生成代码?我想发帖的人一定是脑子坏掉了。 自动生成的代码可读性差,修改之后则与源设计不能反向映射。 只有垃圾才把开发平台定位为自动生成代码来糊弄菜鸟! 一个系统,80%的功能是简单的,不需要快速开发平台都可以快速开发出来,只会占用开发工作量的20%,而剩下20%复杂的功能则需要投入80%的开发工作量。这里还没有谈到系统的运维工作。 目前的这些所谓开发平台,只善于在占用开发工作量的20%上做文章,对那些需要投入80%的开发工作量的工作一知半解,毫无头绪。 这位兄台,我觉得你先要管住自己的嘴巴,不要在这里失礼。 自动生成代码,是规律性比较强的代码,至于是不是可读性很也很差就看个人的造诣了,另外也要去考虑下,是否有必要去强调可读性一定要很好。另外,事物都是两面性的,你要有规律要快,就得牺牲点什么,我们要在这两者之间取一个平衡。 另外,你说设计和源码的直接的方向问,如果你思维只是停留在这个对应关系上面来的寻找突破点的话,你肯定不能前行,你为什么不考虑下,我不反向行吗? “而剩下20%复杂的功能则需要投入80%的开发工作量”,这个就的看你平台的扩展性了,有些平台看起来很完美,一个系列的,但很可能会发生你所说的这样的问题,能否做到20%的复杂功能,还能如一般写java代码一样处理,那就看每个平台的设计了。经过那么多年的摸索和积累,国内有些平台还是不错的,对于你提到的这个问题,别人也有一定的合理的解决方案。 有时候我觉得最好不要以自己的经验来作为判断的别的事物的依据或标准,因为每个人的认知都是非常有局限性的,你想不通的问题,未必在别人那里走不通,有时候跳出自己的思维框框去想问题可能会更好。 如果说我不谦虚而失礼了,那么原因是因为你这文章的标题和水平相差很远。 上面有人指出了,规律性较强的代码应被封装为可复用的组件,重复调用,而不是重复生成代码。 做为一个技术人员,你认为“人的知识是有限的”是可以逃避批评的理由吗? 电信的算费代码你能生成否? 电费的收费代码你能生成否? 工作流代码你能生成? 数据权限代码你能生成? 报表统计代码你能生成? 设备管理中的设备装拆换移你能生成? 不要以为编程就是CRUD,只有不关注“领域模型”的菜鸟才会把目光聚焦于所谓自动代码生成这样毫无意义的工作上。 我同意楼上的,与其研究如何去生成代码,不如去研究如何更好的去重构自己的代码 |
|
返回顶楼 | |
发表时间:2011-11-05
最后修改:2011-11-05
tianzizhi 写道 泰山北斗 写道 lanjian 写道 泰山北斗 写道 就这垃圾帖也评委精华????
开发平台的核心居然是自动生成代码?我想发帖的人一定是脑子坏掉了。 自动生成的代码可读性差,修改之后则与源设计不能反向映射。 只有垃圾才把开发平台定位为自动生成代码来糊弄菜鸟! 一个系统,80%的功能是简单的,不需要快速开发平台都可以快速开发出来,只会占用开发工作量的20%,而剩下20%复杂的功能则需要投入80%的开发工作量。这里还没有谈到系统的运维工作。 目前的这些所谓开发平台,只善于在占用开发工作量的20%上做文章,对那些需要投入80%的开发工作量的工作一知半解,毫无头绪。 这位兄台,我觉得你先要管住自己的嘴巴,不要在这里失礼。 自动生成代码,是规律性比较强的代码,至于是不是可读性很也很差就看个人的造诣了,另外也要去考虑下,是否有必要去强调可读性一定要很好。另外,事物都是两面性的,你要有规律要快,就得牺牲点什么,我们要在这两者之间取一个平衡。 另外,你说设计和源码的直接的方向问,如果你思维只是停留在这个对应关系上面来的寻找突破点的话,你肯定不能前行,你为什么不考虑下,我不反向行吗? “而剩下20%复杂的功能则需要投入80%的开发工作量”,这个就的看你平台的扩展性了,有些平台看起来很完美,一个系列的,但很可能会发生你所说的这样的问题,能否做到20%的复杂功能,还能如一般写java代码一样处理,那就看每个平台的设计了。经过那么多年的摸索和积累,国内有些平台还是不错的,对于你提到的这个问题,别人也有一定的合理的解决方案。 有时候我觉得最好不要以自己的经验来作为判断的别的事物的依据或标准,因为每个人的认知都是非常有局限性的,你想不通的问题,未必在别人那里走不通,有时候跳出自己的思维框框去想问题可能会更好。 如果说我不谦虚而失礼了,那么原因是因为你这文章的标题和水平相差很远。 上面有人指出了,规律性较强的代码应被封装为可复用的组件,重复调用,而不是重复生成代码。 做为一个技术人员,你认为“人的知识是有限的”是可以逃避批评的理由吗? 电信的算费代码你能生成否? 电费的收费代码你能生成否? 工作流代码你能生成? 数据权限代码你能生成? 报表统计代码你能生成? 设备管理中的设备装拆换移你能生成? 不要以为编程就是CRUD,只有不关注“领域模型”的菜鸟才会把目光聚焦于所谓自动代码生成这样毫无意义的工作上。 我同意楼上的,与其研究如何去生成代码,不如去研究如何更好的去重构自己的代码 我觉得生成代码和重构并不冲突,而是一个互补的关系 可以这样看待这个问题: 生成代码(业务代码),是业务上的表现,而重构是框架性的、可重用单元上的整理,这个整理恰好是为了生成业务代码服务,业务代码本身就是居于现有的框架或者一些可重用的方法上面 串联而来的。 |
|
返回顶楼 | |
发表时间:2011-11-05
findhappy7 写道 KimHo 写道 代码层面的东西,抽象角度还是不够高
现在比较流行的是面向模型驱动了,0代码开发 我个人觉得 0代码开发是不可能的,用已知的系统或者程序去解决未知的业务,肯定做不到。所以某些特殊的业务代码肯定要去写,然后这办法代码如何和现有的系统或者程序去结合是关键。 根源还是没变,就是你说的代码 但问题是,你已经事先把所有的代码,抽象整合为模型了 模型与模型之间的交互,就完成了整个系统的开发。 所以看不见代码,我并不是说没有代码 |
|
返回顶楼 | |
发表时间:2011-11-06
重复早轮子,去看看 grails吧。
|
|
返回顶楼 | |
发表时间:2011-11-06
java-007 写道 重复早轮子,去看看 grails吧。
重复早轮子?javaeye之前也有过这样的一个帖子重点在于如何生成非规则性代码的?我印象中应该没有。 另外一个问题,重复轮子又如何,关键的是,能标新立异,不是吗?。 |
|
返回顶楼 | |
发表时间:2011-11-06
KimHo 写道 findhappy7 写道 KimHo 写道 代码层面的东西,抽象角度还是不够高
现在比较流行的是面向模型驱动了,0代码开发 我个人觉得 0代码开发是不可能的,用已知的系统或者程序去解决未知的业务,肯定做不到。所以某些特殊的业务代码肯定要去写,然后这办法代码如何和现有的系统或者程序去结合是关键。 根源还是没变,就是你说的代码 但问题是,你已经事先把所有的代码,抽象整合为模型了 模型与模型之间的交互,就完成了整个系统的开发。 所以看不见代码,我并不是说没有代码 关键的地方在于,自定义代码,是当做一个已经存在的模型看待了,所以可以理解为0代码了,还是因为我们在开发项目的时候要为某些逻辑写代码,所以我们称之为非0代码开发。 不过,无论怎样看待这个问题都好,都只是我们个人对实物的理解划分概念上的分歧而已,但事物依然还是那回事。 |
|
返回顶楼 | |
发表时间:2011-11-07
公司在用那个动量平台,感觉是很强大,但每次发布都超慢,很不爽,感觉用平台后自己就是白痴了~不是程序员都能干开发了~,可悲啊~!所以我一直都很抵触所谓的开发平台。
|
|
返回顶楼 | |
发表时间:2011-11-07
非常巧楼主这个帖子的思路跟我们正在做的事情非常像,我们也再做基于代码生成的平台也是Eclipse插件方式实现。
整个平台分为运行平台和快速开发平台,其实快速开发平台应该叫做辅助开发工具更贴切一些。 借这个地方说下我的观点: 首先我个人是比较支持生成代码的方式的。 至于生成代码的还是基于配置(或者说高度抽象0代码)是两种思路,各有利弊。 基于配置的方式让业务功能基于配置,可无代码实现需求。这使得业务的实现和修改都比较容易,但是不利于实现个性化需求的实现。比如说,基于配置实现了一个订单的维护功能,客户需要添加读取另一个系统导出的xml或者excel的的需求,恐怕配置还是难以实现吧?即使是这点你想到了,可以说,我们平台有一套可配置的导入功能,那客户说了我要从excel中复制粘贴一张表格到你的系统内单据上,你再来配置一下试试?即使是共更能上你抽象了很多备用功能可用来配置组装,客户的业务还是无法穷尽的。所以不要妄图抽象提取客户所有的功能和业务要求,客户的需求是千变万化的。 而基于生成代码的实现方式则更容易满足客户这样的变态要求。有源代码,还有什么不能实现?如果实现不了那只能是编码人员技术的问题了或者客户的需求太无理取闹了,而不是因为平台限制了开发人员的发挥。 基于原码生成的方式,我建议还是生成那些常用的代码比如crud、审批、打印等等。代码生成不代表不抽象,生成的代码也是有父类的,基本的代码都可以在父类中实现,生成出的子类代码只留一些钩子方法,用于开发人员修改,加入特殊逻辑。如果没有特殊需求,这样做或许会有些重复,让很多代码非常相似,但这种相似的冗余,我认为是有必要的,可认为是为了以后的修改和扩充做的预留。 代码生成的意义在于让业务开发人员的开发能共容易实现一些,更少的犯错,代码的风格更统一。 至于特殊的业务逻辑,我觉得还是不要生成了,既然特殊说明可重用性很小。花力气生成这么个性的东西投入产出实在是不合算。 这只是我个人观点,如有不妥,还请指教啊。 |
|
返回顶楼 | |
发表时间:2011-11-07
最后修改:2011-11-07
songlixiao 写道 非常巧楼主这个帖子的思路跟我们正在做的事情非常像,我们也再做基于代码生成的平台也是Eclipse插件方式实现。
整个平台分为运行平台和快速开发平台,其实快速开发平台应该叫做辅助开发工具更贴切一些。 借这个地方说下我的观点: 首先我个人是比较支持生成代码的方式的。 至于生成代码的还是基于配置(或者说高度抽象0代码)是两种思路,各有利弊。 基于配置的方式让业务功能基于配置,可无代码实现需求。这使得业务的实现和修改都比较容易,但是不利于实现个性化需求的实现。比如说,基于配置实现了一个订单的维护功能,客户需要添加读取另一个系统导出的xml或者excel的的需求,恐怕配置还是难以实现吧?即使是这点你想到了,可以说,我们平台有一套可配置的导入功能,那客户说了我要从excel中复制粘贴一张表格到你的系统内单据上,你再来配置一下试试?即使是共更能上你抽象了很多备用功能可用来配置组装,客户的业务还是无法穷尽的。所以不要妄图抽象提取客户所有的功能和业务要求,客户的需求是千变万化的。 而基于生成代码的实现方式则更容易满足客户这样的变态要求。有源代码,还有什么不能实现?如果实现不了那只能是编码人员技术的问题了或者客户的需求太无理取闹了,而不是因为平台限制了开发人员的发挥。 基于原码生成的方式,我建议还是生成那些常用的代码比如crud、审批、打印等等。代码生成不代表不抽象,生成的代码也是有父类的,基本的代码都可以在父类中实现,生成出的子类代码只留一些钩子方法,用于开发人员修改,加入特殊逻辑。如果没有特殊需求,这样做或许会有些重复,让很多代码非常相似,但这种相似的冗余,我认为是有必要的,可认为是为了以后的修改和扩充做的预留。 代码生成的意义在于让业务开发人员的开发能共容易实现一些,更少的犯错,代码的风格更统一。 至于特殊的业务逻辑,我觉得还是不要生成了,既然特殊说明可重用性很小。花力气生成这么个性的东西投入产出实在是不合算。 这只是我个人观点,如有不妥,还请指教啊。 如果客户需求是千变万化的,即便可以自动生成CRUD也无济于事,因为不能自动维护这些CRUD。 其次,导致程序员认为客户需求千变万化的原因有三点: 一、是可能客户这个行业是个新行业,确实存在很多变化(这种情况较少) 二、是开发人员根本不懂业务,或对业务一知半解。 三、是开发人员不具备抽象能力。 |
|
返回顶楼 | |