锁定老帖子 主题:深入浅出教你做一个快速开发平台
精华帖 (6) :: 良好帖 (9) :: 新手帖 (0) :: 隐藏帖 (6)
|
|
---|---|
作者 | 正文 |
发表时间:2011-11-07
泰山北斗 写道 songlixiao 写道 非常巧楼主这个帖子的思路跟我们正在做的事情非常像,我们也再做基于代码生成的平台也是Eclipse插件方式实现。
整个平台分为运行平台和快速开发平台,其实快速开发平台应该叫做辅助开发工具更贴切一些。 借这个地方说下我的观点: 首先我个人是比较支持生成代码的方式的。 至于生成代码的还是基于配置(或者说高度抽象0代码)是两种思路,各有利弊。 基于配置的方式让业务功能基于配置,可无代码实现需求。这使得业务的实现和修改都比较容易,但是不利于实现个性化需求的实现。比如说,基于配置实现了一个订单的维护功能,客户需要添加读取另一个系统导出的xml或者excel的的需求,恐怕配置还是难以实现吧?即使是这点你想到了,可以说,我们平台有一套可配置的导入功能,那客户说了我要从excel中复制粘贴一张表格到你的系统内单据上,你再来配置一下试试?即使是共更能上你抽象了很多备用功能可用来配置组装,客户的业务还是无法穷尽的。所以不要妄图抽象提取客户所有的功能和业务要求,客户的需求是千变万化的。 而基于生成代码的实现方式则更容易满足客户这样的变态要求。有源代码,还有什么不能实现?如果实现不了那只能是编码人员技术的问题了或者客户的需求太无理取闹了,而不是因为平台限制了开发人员的发挥。 基于原码生成的方式,我建议还是生成那些常用的代码比如crud、审批、打印等等。代码生成不代表不抽象,生成的代码也是有父类的,基本的代码都可以在父类中实现,生成出的子类代码只留一些钩子方法,用于开发人员修改,加入特殊逻辑。如果没有特殊需求,这样做或许会有些重复,让很多代码非常相似,但这种相似的冗余,我认为是有必要的,可认为是为了以后的修改和扩充做的预留。 代码生成的意义在于让业务开发人员的开发能共容易实现一些,更少的犯错,代码的风格更统一。 至于特殊的业务逻辑,我觉得还是不要生成了,既然特殊说明可重用性很小。花力气生成这么个性的东西投入产出实在是不合算。 这只是我个人观点,如有不妥,还请指教啊。 你认为客户需求是千变万化的,所以抽象不出来模型,而却可以生成代码,这是什么逻辑?我知道了,你是说尽管需求千变万化,归结起来不过是CRUD,对吧? 反应好迅速,呵呵。 是这个意思。虽然需求千变万化,但是CRUD是最基础的。其他的都可以基于生成的代码自由扩充。 |
|
返回顶楼 | |
发表时间:2011-11-07
泰山北斗 写道 如果客户需求是千变万化的,即便可以自动生成CRUD也无济于事,因为不能自动维护这些CRUD。 其次,导致程序员认为客户需求千变万化的原因有三点: 一、是可能客户这个行业是个新行业,确实存在很多变化(这种情况较少) 二、是开发人员根本不懂业务,或对业务一知半解。 三、是开发人员不具备抽象能力。 可能是对平台的定位不同吧。 我理解的平台是支持业务但不包含业务的。既然不包含业务,客户的业务根据行业不同、规模不同以及IT应用的背景和环境不同都会有所差异的。所以我们只是抽取最基础的操作做代码生成,可是不仅仅是CRUD,还有审批、打印、导入导出、上下游单据制单与生成、业务事件、单据项配置等等。 对于开发人员不懂业务,我觉得懂也是相对的,没有人能懂所有行业的业务,懂生产制造的不一定懂金融、电信的、不一定懂石油、煤炭、军工的。懂也是懂抽象通用的业务功能上的需求。即使全都懂,实现上也不一定能兼容兼顾,所以我们不奢望完全的抽象,只抽取一部分。 大体是这个意思。 顺便说下,楼主这个帖子题目起的确实不太好。我本想进来学学怎么做个快速开发平台。呵呵。还是有点失望。 |
|
返回顶楼 | |
发表时间:2011-11-07
最后修改:2011-11-07
songlixiao 写道 泰山北斗 写道 如果客户需求是千变万化的,即便可以自动生成CRUD也无济于事,因为不能自动维护这些CRUD。 其次,导致程序员认为客户需求千变万化的原因有三点: 一、是可能客户这个行业是个新行业,确实存在很多变化(这种情况较少) 二、是开发人员根本不懂业务,或对业务一知半解。 三、是开发人员不具备抽象能力。 可能是对平台的定位不同吧。 我理解的平台是支持业务但不包含业务的。既然不包含业务,客户的业务根据行业不同、规模不同以及IT应用的背景和环境不同都会有所差异的。所以我们只是抽取最基础的操作做代码生成,可是不仅仅是CRUD,还有审批、打印、导入导出、上下游单据制单与生成、业务事件、单据项配置等等。 对于开发人员不懂业务,我觉得懂也是相对的,没有人能懂所有行业的业务,懂生产制造的不一定懂金融、电信的、不一定懂石油、煤炭、军工的。懂也是懂抽象通用的业务功能上的需求。即使全都懂,实现上也不一定能兼容兼顾,所以我们不奢望完全的抽象,只抽取一部分。 大体是这个意思。 顺便说下,楼主这个帖子题目起的确实不太好。我本想进来学学怎么做个快速开发平台。呵呵。还是有点失望。 嗯,是不是有点以偏概全的感觉,我这里更多的是说明如何去生成非规则性代码,对于平台来说还只是部分。 下次继续写其他方面的,请都多指教,不过,这些都是我个人的心得、理解而已。 这个文章更多的是想带给别人一种新思路的参考,或者说是一种旧思路,只是没人来提及,我这里将它简化写出来而已。 |
|
返回顶楼 | |