快速开发平台,重点在于快,要快无非就是两种手段:
1、生成代码
2、重用模块
详细看如下的分支图
就第一种情况生成代码来说,是每个快速开发平台必备的,基本上所有的快速开发平台都能生成CRUD,从jsp页面到java代码都可以,当然能不能生成直接可用的代码就似乎平台的功力了,有些是生成后,
需要手动去调整某些东西才能运行,例如,一些表单的验证,或者一些需要配置文件,因为你生成的CRUD,可能是需要在某个配置文件中,插入某段配置,所有往往这个也需手动去调整。
但这里有重要一点,CRUD都是属于比较规范的代码,那不规范的代码如何生成呢?例如,一个登陆过程,或者一个报表统计的过程,这些非规范的代码生成在后面我会说到。
这里先继续说一下重用的另外一个手段:重用模块,很多公司都有自己的一套所谓的框架,这个也是重用模块的一种常见手段,基本上就是提取出共用的功能函数或者必要的过程段,
然后加以整理,从而形成一个通用的模块集。
例如,通用的权限管理平台等,或者通用的方法库等,这些整理出来后,一般情况下往后的项目之需要进行使用即可,而不需再重新开发,从而达到快速开发的目的。
继续说一下如何生成代码,这里还是说生成的是规则的代码,类似CRUD这些的代码。要实现生成规则代码的目的,可以有很多方法形式,
常见的有如下三种:
1、居于浏览器做一个web平台,然后在web平台里面可以针对某些表或者pojo等,通过界面配置来生成代码。
2、可以居于eclipse体系之上做插件
3、当然可以自己写一些桌面应用,在.net 领域比较常见些,java领域也有人是通过dephi做桌面应用的 快速开发工具的
当然还有第4种,就是写个main函数作为入口,然后读取相关模板和配置文件进行生成规则代码,连界面都不要了。
这三种方式,我就不多说了,下图分别对这三种方式的优缺点总结,当然这个是我个人的见解。
以上基本上都在说如何生成规则的代码,那不规则的代码,如何生成呢?有必要生成吗?
嗯,对于第二个问题,我们先搁置,这个是不是我写个文章的目的。
我重点说一下应该如何生成不规则的代码。
先假设一个经典的案例:
一个登陆的过程吧:
1、用户先是打开登陆页面,然后输入用户名、密码
2、然后按登陆按钮
3、服务器端程序,接收到请求,然后从request中取出 用户名和密码
4、然后使用用户名和密码,进行数据库查询
5、如发现的有对应的记录,则转向成功登陆的页面
6、如果没有对应的记录,则转向登陆页面
以上的过程中,服务器端运行的程序段,我们可以这样去划分层次:
1、接收请求(用户名、密码)
2、执行逻辑(数据库查询)
3、结果返回(根据查询的结果,从而转向两个不同的页面)
那么我们怎样来生成以上那段不规则的代码呢?
嗯,需要把上面三个程序段抽取为三个模型来处理,
第一个模型:接受参数模型
第二个模型:执行逻辑模型
第三个模型:返回结果模型
既然有了模型,那如何为这些模型赋予相关的属性呢?从案例出发,
接受参数的模型,最重要的属性,当然是 接受怎样的参数了,然后这些参数应该定义为怎样的类型了。
可以这样设计这个模型:
接受参数模型{
参数列表{参数名、参数类型;参数名、参数类型;.....}
}
那执行逻辑模型呢?在这个案例里面,执行的逻辑是,把接收到的用户名和密码拿出来,然后去查询数据库表,再返回结果,
如果按照我们写代码的习惯,会把这个过程独立成为一个方法,然后用户名和密码就是输入的参数,而查询的结果,我们可能使用int来返回,
返回1,就代表是有,如果返回 0 就代表没有(当然,你使用布尔类型也可以,这个不影响模型的抽取)。
那么这个模型可以设计如下:
执行逻辑的模型{
输入参数{参数名、参数类型;参数名、参数类型;.....}
返回参数{参数类型}
}
这样一看,貌似是缺乏些什么?那我所要执行的真正逻辑在哪表示了?还没有包含啊?对的,缺乏这个,那在这个模型里面,如何表示?嗯,要不,我们先从一个简单的角度去考虑:
假如你已经有一个登陆方法了,你只需要传入用户名和密码,就能返回1表单有该用户,0代表没有。那么以上的模型就可以表示如下:
执行逻辑的模型{
输入参数{参数名、参数类型;参数名、参数类型;.....}
返回参数{参数类型}
执行的方法 //什么包下什么类什么方法
}
返回结果模型呢:
返回结果模型,这里根据不同的结果返回不同的jsp页面,不妨,我们就用一个jsp模型,来代表返回结果的模型
如果我们写java代码,一般都是这样写:
结果不同就forward不同的页面
然后在forward页面前,我们可能要将一些要输出到jsp页面的变量设置的到request中的Attribute中去,例如,如果我们这个案例中,如果没有该用户的话,返回的是登陆页面,
我们需要在登陆页面中显示“你输入的用户名或者密码有误”,这样一个反馈信息给用户知道。
所以,我们的返回模型、也就是jsp模型可以这样设计:
返回结果模型(jsp模型){
返回参数{参数名、参数名....} //可能是返回多个
jsp页面的路径 //需要转向的jsp页面路径
}
有了模型后,那该如何生成代码?模型只不过是描绘这一个请求处理过程的细分单元罢了,嗯,那怎样生成代码呢?
模型怎样去描绘这个请求处理过程呢?
这里需要一个编辑器,然后在这个编辑器上面使用模型来描绘这个过程。例如,如下的登陆截图
要实现这样一个编辑器,有很多技术可以实现:flex、gef、gmf等,或者你自己写个swing拖拽器也可以。。
在编辑器里面用模型描绘完这个请求处理过程后,怎样生成代码?
生成代码比较简单,过程其实上和生成CRUD是一样的,都是读取某些信息,然后使用模板引擎freemarker或者其他的,然后套用到某个模板上面,即可生成对应的代码了。
但这里得注意,模板?那这个模板应该怎样写呢?
和我们写普通模板一样,先是写可以跑通的程序,然后把非公用的属性挖走,就是模板了,
例如,CRUD的模板,我们是从CRUD程序里面挖走 哪个表,什么字段这些,当然有时候是必须加些判断来控制代码的生成。
这个请求过程的模板,也是如此,先按 模型思想,就是 “接受参数”模型、“执行逻辑”模型、“JSP”模型,写出程序来,跑通后,
再把非公用的东西挖走,例如,接受什么参数啊,执行什么方法啊,转向什么页面啊等挖走,就成了模板了。
实际上要让快速开发平台能生成 非规则的源码,重点是在于,对请求处理过程的模型抽取,每个公司都有自己的抽取方式,就例如上面的案例,但始终都离不开 “合理的模型能组合成为一个完成的请求处理过程” 的原则。
上面的 登陆过程图实际上是最简单的一种请求处理过程抽取。
你在开发项目的时候,往往会需要返回ajax,,那就多加一个ajax模型吧,,可以!
有时,可能是你底层的方法库是没有的,那需要自己手动写一个方法,,然后这个方法我要嵌入到这个请求处理图中去,,那就多加一个自定义方法的模型吧,,可以!
。。。其他情况,依然这样处理。
事实上,要抽签合适的模型需要一个循序渐进的过程,但可以参考一些现有的开发平台,他们已经抽取好了,然后根据他们的模型,按照自己的思维、技能进行调整,得到自己想要的模型集。
模型的抽取是按照每个人的思维方式不同而不同,因人而异,没有标准化。
当然你也可以利用这种生成非规范代码的思想来开发工作流程序,也可以用来开发工控的一些图形化编程工具,或者是电信行业的ivr程序都可以。
小结一下:
要生成非规则性的代码,处理过程无非就是,先写一个可以跑通的程序,然后在这个程序里面把异性的元素抽取出来,变成模型(可以理解为一个变量),然后生成代码的适合,就是将这个变量赋值,
再和原来被抽取的程序段结合,即可。
关键的地方是在应该怎样抽取异性元素才是更适合,另外,一个关键点是抽查出来的异性元素(模型)怎样赋值的问题,这需要一个工具,才能更好的把赋值和生成代码集合起来。
后话:
当然在快速开发平台中,生成代码,不管是规则或者非规则,都只是部分功能而已,还有其他很多功能,所以,我个人感觉快速开发平台最好能依赖eclipse体系而已建立,以达到重用eclipse系统本身某部分功能的目的,从而减少开发量。
相关推荐
在压缩包内,除了主教材《深入浅出MFC》高清第二版(书签).pdf外,还有两个辅助文件:VC驿站-C C++ VC 编程 教程 培训 论坛.lnk可能是一个链接,提供了更多C++和MFC相关的学习资源和讨论平台;VC 驿站.txt可能包含...
Spring框架是Java平台上的一个开源框架,它提供了一种全面的基础架构支持,让Java开发者能够开发出更为简洁、高效的应用程序。接下来,我们将基于该视频的内容介绍几个重要的知识点。 ### Spring框架简介 Spring...
《深入浅出C#》是一本专为C#初学者设计的编程教程,它以其深入浅出的讲解方式,帮助读者快速掌握C#这门强大的编程语言。C#是由微软公司开发的一种面向对象的编程语言,广泛应用于Windows平台、Web应用、游戏开发等多...
《深入浅出Android入门开发入门教程》是一份旨在引导初学者步入Android开发领域的详细指南。这份教程涵盖了从安装SDK到配置开发环境等一系列基础步骤,帮助新手建立必要的开发环境,为后续的学习打下坚实的基础。 ...
接着,《深入浅出MFC》教你如何利用MFC创建交互式Windows应用程序;《WINDOWS程序设计》和《WINDOWS核心编程》则让你掌握Windows系统的底层知识。这样的学习顺序既有助于理论与实践的结合,也能逐步提升你的编程技能...
### 使用Python编程的关键知识点 ...总之,《深入浅出 Python(中文版)》是一本结合了理论与实践、趣味性与实用性于一体的优秀编程教材,无论你是编程新手还是有一定基础的开发者,都能从中获得宝贵的技能和知识。
《深入浅出MFC教程》是华中科技大学出版社出版的一本关于Microsoft Foundation Classes (MFC) 的技术书籍,旨在帮助读者全面理解并掌握MFC这一强大的Windows应用程序开发框架。MFC是微软为C++开发者提供的一个类库,...
**深入浅出学习MFC 完整版** MFC(Microsoft Foundation Classes)是微软提供的一套C++类库,用于简化Windows应用程序开发。这个库基于面向对象编程思想,封装了Windows API,使得开发者可以更高效地创建用户界面、...
本教程将深入浅出地探讨Flex的基本概念、核心技术和实际应用。 一、Flex概述 Flex是一种用于创建交互式、数据驱动的Web应用程序的技术,它允许开发者构建动态、响应式的用户界面,具有丰富的视觉效果和高效的性能。...
【深入浅出Oracle之BIEE】:Oracle Business Intelligence Enterprise Edition(BIEE)是Oracle公司的一款企业级商业智能解决方案,旨在提供全面的数据分析、报表和仪表板功能。本资料旨在帮助开发人员快速掌握BIEE...
MFC是微软开发的一个C++类库,用于构建Windows应用程序,它为开发者提供了一种高效、结构化的编程方式,使得Windows API的使用变得更加简单。 MFC的设计理念是基于面向对象编程,它封装了Windows API,将底层的Win...
通过深入浅出地学习BREW,开发者能够掌握移动设备和嵌入式系统的开发知识。这一过程不仅提升了他们对硬件和操作系统的理解,还加深了对编译器和工程管理的认识。对于那些希望拓宽技术视野,深入移动设备或嵌入式系统...
当创建一个对象时,实际上是根据类的定义实例化出一个具体的对象。而对象则是类的具体实例,它们接收消息并作出响应。Objective-C通过objc_class和objc_object这两个结构体来定义类和对象,其中objc_class包含类的元...
《深入浅出MFC》是侯俊杰先生撰写的一本关于Microsoft Foundation Classes (MFC) 的经典教程。MFC是微软公司为Windows平台提供的一种C++类库,它基于面向对象编程思想,使得开发者能够更方便地利用Windows API进行...
《深入浅出MFC》作为一本旨在帮助程序员深入掌握Microsoft Foundation Classes (MFC) 库的教程书籍,它以其系统性、实践性与深入浅出的叙述方式,为广大Windows平台下的C++开发者提供了一条清晰的学习路径。...
它采用局域网(LAN)技术,结合了西门子可编程控制器(PLC)和现场总线技术的优点,构成了一个完整的自动化解决方案。 PCS7系统由众多西门子硬件组件构成,包括但不限于自动化仪表、执行器、模拟式和数字式I/O模块...
以上就是对《深入浅出JavaScript(中文版)》这本书的一些知识点的总结,由于文章内容有限,无法提供更详细的章节介绍,但上述内容可以为想要学习JavaScript的读者提供一个基础的了解。如果想要深入了解JavaScript,...