重复的代码是程序员永远的敌人。坚持着这一思路,我一直非常反对在Java开发中使用代码生成工具,而坚信重复的代码是可以通过良好的结构给予消除的。
曾经代码生成器过度的使用也有一定的历史背景。比如说一些老的开发框架代码实现繁琐、反射和代理机制没有得到广泛的应用等等。慢慢的,岁月流转,有一部分的代码生成器消失不见了,但还有一些保留下来,根据存在既合理的前提,我也渐开始相信它们有自己存在的价值和意义。
有以下三种情况,使用代码生成器是合理的。
一、在代码生成器开发模式下有良好的技术积累,从保护现有技术价值和减少转换开发模式风险的角度来考虑而断续使用是可以接受的。一些代码生成器中的精品,可以从设计文件开始(如PD的设计),生成一个功能的雏形,虽然这些生成的代码也能通过公用的代码来实现,但为此而改变项目组的习惯开发方式并非上策,要知道,任何技术的更新都是要有代价的,也许你很愿意尝试但你的PM是否也这么想?
二、对代码执行速度有较高的要求时,代码生成器是一个好的选择。想实现通用的东西,必需要容忍它们之前的差异,而做的这一点if…else…、instanceof和Reflection这样的东西是少不了的。当这些代码以百万次的级别运行时,还是多考虑一些效率上的问题吧。通过Method.invoke()这样的方式调用对性能可是会有一个数量级上的损失,不像直接调用或通过接口——你几乎可以把它们排除到关于效率的思考之外。
三、具有类似并可转换的结构,但物理上确实分离——总感觉说不明白,这样的表达把我自己都快弄糊涂了。如果提起Hibernate Tools里可以根据数据库结构生成POJO类的功能,相信你会立刻明白,这类代码生成器更像是一种转换器,让生成的程序具有外部信息同样的结构。
在编写代码生成器时,还要注意以下方面:
首先,在生成代码的过程中是否有太多需要人为参与的地方?生成后的代码是否有可能需要进行改动?如果需要在生成过程中人为指定很多东西的话,这样的代码生成器是不成功的,不妨考虑更好的利用配置文件或是想一想代码生成的来源是否恰当。而生成后的代码如果人为进行了改动,那么当设计文件有所变化时,新生成的代码如何和以前的改动进行合并是一个让人头痛的问题。
其次,生成器产生的结果是代码而不是密码,它最终还是要给开发者进行阅读或调试。良好的代码风格和必要的注释一定要有,不能只因为是工具生成的就可以把要求降低到正常工作既可而无视实现的细节杂乱无章。
在项目中使用代码生成器是否能算是一种模式?我只是随意间用到了这个名称而无意讨论这个问题。至于打算进来一起研究“生成器模式”的读者更不妨对此一笑了之。
分享到:
相关推荐
1. 数据库映射:在ORM(对象关系映射)开发中,代码生成器可以从数据库模式自动生成实体类和数据访问层代码。 2. MVC框架:在ASP.NET MVC项目中,可以生成控制器、视图和模型类,简化Web应用的构建。 3. WPF/...
代码生成器是一种强大的工具,它能够自动生成符合特定规范或模式的源代码,极大地提高了开发效率,降低了程序员的重复劳动。在IT行业中,代码生成器的应用广泛,尤其在大型项目或者需要大量标准化代码的场景下,如...
通过动软代码生成器,开发者可以选择并应用各种设计模式,如工厂模式、单例模式、观察者模式、装饰器模式、策略模式等,这些模式可以有效地提高代码的可读性、可维护性和可扩展性。 代码生成器的核心功能包括: 1....
通过学习这个代码示例,你可以了解到如何在实际项目中应用生成器模式,理解其优点,如提高代码可读性、灵活性和可维护性。此外,还可以学习到如何通过导演类来控制构建过程,实现不同的构建策略,以适应不断变化的...
2. **元数据支持**:为了生成与数据库交互的代码,代码生成器需要能够理解数据库模式,如表结构、字段类型等。因此,它通常会集成对ORM(对象关系映射)框架的支持,如Entity Framework,能够自动从数据库模型生成...
asp.net 代码生成器 【基本说明】 1、能够生成三层模式操作的所有后台代码,简单的SQL Server 2005数据库操作。 2、生成的代码包括了 MODEL、BLL、DAL、DBHelper、Config 生成的代码内有详细注释可提供参考。 ...
"C#三层代码生成器"是一个工具,旨在帮助开发者快速生成C#项目的三层架构代码,减少手动编写代码的工作量,提高开发效率。三层架构是一种常见的软件设计模式,它将应用程序分为三个主要层次:表现层(UI)、业务逻辑...
《Asp.net(C#)代码生成器源码详解》 在软件开发过程中,代码生成器是一种提高效率的重要工具,尤其在Asp.net(C#)框架下,它能够自动生成大量基础代码,帮助开发者快速构建应用的骨架。本文将深入探讨Asp.net(C#)...
对于基于数据库的应用,代码生成器可以从数据库模式中提取信息,生成对应的实体类、数据访问层(DAO)、服务层和控制器层代码,极大地简化了数据驱动应用的开发。 7. **前后端同步**: 在现代Web开发中,前端和...
代码生成器通常会解析数据库模式,根据表结构生成相应的实体类和操作接口。 代码生成器的核心功能通常包括以下几点: 1. **模板引擎**:代码生成器的核心是模板引擎,它允许开发者定义模板,这些模板包含了要生成...
SQL代码生成器是一种工具,它自动化了创建SQL脚本的过程,极大地提高了开发人员的效率。在SQL Server环境下,这样的工具尤为重要,因为SQL Server数据库的复杂性和规模常常需要编写大量复杂的查询和数据操作语句。本...
在软件开发过程中,代码生成器是一种能够自动化生成特定结构或模式代码的工具,极大地提高了开发效率,降低了出错的可能性。本文将详细探讨一个基于.NET的三层代码生成器,它能直接连接数据库,解压即用,并在使用时...
在C#中,生成器模式的实现通常涉及类的隔离和组装,以避免客户端代码直接构造复杂对象,而是通过一个专门的生成器类来完成。 生成器模式的核心思想是分离了抽象部分(产品的接口或抽象类)和具体实现部分(产品的...
在这个特定的案例中,"C#版本的工厂模式代码生成器"是一个工具,能够帮助开发者批量生成C#代码,从而提高开发效率和代码的一致性。 批量代码生成器通常包含以下几个关键组件: 1. **用户界面**:这是与开发者交互...
动软代码生成器是一款完全自主知识产权研发的为软件项目开发设计的自动代码生成器,也是一个软件项目智能开发平台,它可以生成基于面向对象的思想和三层架构设计的代码,结合了软件开发中经典的思想和设计模式,融入...
Java代码生成器是一种工具,主要用于自动化编程过程中重复性较强的部分,比如在DAO(Data Access Object)模式下创建数据访问层的类。DAO模式是软件设计模式之一,它封装了数据库操作,使得业务逻辑与数据访问逻辑...
1. **模板驱动**:通过预先定义的模板,代码生成器可以根据特定的输入(如数据库模式、ORM映射信息)生成符合规范的C#代码。模板通常使用模板引擎,如T4(Text Template Transformation Toolkit),允许开发者自定义...
《C#动软代码生成器连接MySQL数据库生成DAL BLL MODEL三层代码详解》 在软件开发过程中,为了提高开发效率和代码质量,代码生成工具扮演着重要的角色。动软代码生成器便是这样一款工具,它支持C#语言,并能与MySQL...