重复的代码是程序员永远的敌人。坚持着这一思路,我一直非常反对在Java开发中使用代码生成工具,而坚信重复的代码是可以通过良好的结构给予消除的。
曾经代码生成器过度的使用也有一定的历史背景。比如说一些老的开发框架代码实现繁琐、反射和代理机制没有得到广泛的应用等等。慢慢的,岁月流转,有一部分的代码生成器消失不见了,但还有一些保留下来,根据存在既合理的前提,我也渐开始相信它们有自己存在的价值和意义。
有以下三种情况,使用代码生成器是合理的。
一、在代码生成器开发模式下有良好的技术积累,从保护现有技术价值和减少转换开发模式风险的角度来考虑而断续使用是可以接受的。一些代码生成器中的精品,可以从设计文件开始(如PD的设计),生成一个功能的雏形,虽然这些生成的代码也能通过公用的代码来实现,但为此而改变项目组的习惯开发方式并非上策,要知道,任何技术的更新都是要有代价的,也许你很愿意尝试但你的PM是否也这么想?
二、对代码执行速度有较高的要求时,代码生成器是一个好的选择。想实现通用的东西,必需要容忍它们之前的差异,而做的这一点if…else…、instanceof和Reflection这样的东西是少不了的。当这些代码以百万次的级别运行时,还是多考虑一些效率上的问题吧。通过Method.invoke()这样的方式调用对性能可是会有一个数量级上的损失,不像直接调用或通过接口——你几乎可以把它们排除到关于效率的思考之外。
三、具有类似并可转换的结构,但物理上确实分离——总感觉说不明白,这样的表达把我自己都快弄糊涂了。如果提起Hibernate Tools里可以根据数据库结构生成POJO类的功能,相信你会立刻明白,这类代码生成器更像是一种转换器,让生成的程序具有外部信息同样的结构。
在编写代码生成器时,还要注意以下方面:
首先,在生成代码的过程中是否有太多需要人为参与的地方?生成后的代码是否有可能需要进行改动?如果需要在生成过程中人为指定很多东西的话,这样的代码生成器是不成功的,不妨考虑更好的利用配置文件或是想一想代码生成的来源是否恰当。而生成后的代码如果人为进行了改动,那么当设计文件有所变化时,新生成的代码如何和以前的改动进行合并是一个让人头痛的问题。
其次,生成器产生的结果是代码而不是密码,它最终还是要给开发者进行阅读或调试。良好的代码风格和必要的注释一定要有,不能只因为是工具生成的就可以把要求降低到正常工作既可而无视实现的细节杂乱无章。
在项目中使用代码生成器是否能算是一种模式?我只是随意间用到了这个名称而无意讨论这个问题。至于打算进来一起研究“生成器模式”的读者更不妨对此一笑了之。
分享到:
相关推荐
动软代码生成器,自动生成设计模式代码, 动软代码生成器,自动生成设计模式代码 动软代码生成器,自动生成设计模式代码 动软代码生成器,自动生成设计模式代码
生成器模式代码示例,使用JAVA代码演示。配有说明文档,有助于对生成器模式的理解。
C#三层与工厂模式代码生成器,自己补全了Oracle部分,有什么问题可以发我邮箱反馈583371641@qq.com,C#三层与工厂模式代码生成器,自己补全了Oracle部分,有什么问题可以发我邮箱反馈583371641@qq.com,
生成器模式源代码 博客中设计模式文章代码
动软代码生成器是一款完全自主知识产权研发的为软件项目开发设计的自动代码生成器,也是一个软件项目智能开发平台,它可以生成基于面向对象的思想和三层架构设计的代码,结合了软件开发中经典的思想和设计模式,融入...
Coding模式->代码生成器模式->手工MERGE智能开发), 可以帮助解决Java项目60%的重复工作,让开发更多关注业务逻辑。既能快速提高开发效率,帮助公司节省人力成本,同时又不失灵活性。 JEECG宗旨是: 简单功能由代On...
动软.Net代码生成器Codematic 是一款为C#数据库程序员设计的自动代码生成器,Codematic 生成的代码基于面向对象的思想和三层架构设计,结合了Petshop中经典的思想和设计模式,融入了工厂模式,反射机制等等一些思想...
9、《Coder(ASP.NET代码生成器)》需要.Net FrameWork2.0运行环境,基于SQL Server 2005使用。 10、如无法运行本软件,请下载并安装由微软公司提供的.Net FrameWork2.0系统. 11、如果您在使用过程中遇到程序问题...
无垠式代码生成器SimpleJEE版 1.0.2 Ada 这是最轻量级的代码生成器,生成物只有大约6.5兆。 采用Servlet,JSP, JSON, JQuery等简单技术实现,是标准的Model2的MVC设计模式的架构。 程序员的瑞士军刀。是喜欢使用低配...
动软代码生成器 是一款完全自主知识产权研发的为软件项目开发设计的自动代码生成器,也是一个软件项目智能开发平台,它可以生成基于面向对象的思想和三层架构设计的代码,结合了软件开发中经典的思想和设计模式,...
基于安卓Android代码生成器是一款生成安卓手机程序的代码生成器 基于分层模式设计思想,生成的代码直接导入Eclipse软件就可以用的! 真正面向对象设计:系统的整体设计,提供通过使用面向对象的方法,设计所需系统...
9.Net代码生成器Codematic 是一款为C#数据库程序员设计的自动代码生成器,Codematic 生成的代码基于面向对象的思想和三层架构设计,结合了Petshop中经典的思想和设计模式,融入了工厂模式,反射机制等等一些思想。...
动软.Net代码生成器 是一款为C#数据库程序员设计的自动代码生成器,Codematic 生成的代码基于面向对象的思想和三层架构设计,结合了Petshop中经典的思想和设计模式,融入了工厂模式,反射机制等等一些思想。...
引领新的开发模式(在线编码模式->代码生成器模式->手工MERGE智能开发),可以帮助解决Java项目60%的重复工作,让开发更多关注业务逻辑。既能快速提高开发效率,帮助公司节省人力成本,同时又不失踪。 JEECG一致是...
这是最轻量级的代码生成器,生成物只有大约6.5兆。 采用Servlet,JSP, JSON, JQuery等简单技术实现,是标准的Model2的MVC设计模式的架构。 程序员的瑞士军刀。是喜欢使用低配服务器的程序员和运维人员的最佳选择。 这...
动软.Net代码生成器Codematic 是一款为C#数据库程序员设计的自动代码生成器,Codematic 生成的代码基于面向对象的思想和三层架构设计,结合了Petshop中经典的思想和设计模式,融入了工厂模式,反射机制等等一些思想...
这是一套强大的C#三层架构模板,用于生成C#三层架构的一整套解决方案
动软.Net代码生成器 是一款为C#数据库程序员设计的自动代码生成器,Codematic 生成的代码基于面向对象的思想和三层架构设计,结合了Petshop中经典的思想和设计模式,融入了工厂模式,反射机制等等一些思想。...
动软.Net代码生成器Codematic 是一款为C#数据库程序员设计的自动代码生成器,Codematic 生成的代码基于面向对象的思想和三层架构设计,结合了Petshop中经典的思想和设计模式,融入了工厂模式,反射机制等等一些思想...