编写代码生成工具的缘由
本人在应用开发部已经待了快1年了,对于大量重复代码编写早已经厌倦,总是做些无营养的工作,而且新来的同事风格各异,看着他们的代码就头痛。。。 无奈,为了别人,也是为了自己。
代码生成工具设计(自己已经完成了代码生成工具,并应用到自己的开发项目中。但因为和代码基线高耦合,没办法分离出来,在此只能暂时给些思路,稍后我会把主要类都一一献上,现在还在思考怎样才能写个可扩展极高的框架)
代码框架设计:
最好的方式就是可以让代码开发人员可以自己写 简易配置文件,模板,生成实现类。
框架提供配置式替换功能和配置文件解析功能。
通过读取模板,替换特定的标识符,达到快速开发的目的。
设计原则:
占有内存少:动态管理内存,缓存对象有自己的生命周期
产生文件效率高:一个文件一个线程,由线程池管理线程
优点:开发快。
缺点:不容易维护,不通用,重新生成会替换掉辛苦写的业务代码,如果想可重用度高些,对开发人员的素质要求较高。
生成类设计
说明:生成类对象可以是数据库中的 表 视图 存储过程,或已经写好的 pojo对象
当前表可以有多个 mayToOne
当前表可以有多个 oneToMany
当前表可以有多个 oneToOne
列表页面集合
编辑页面集合
生成后台文件
待修改文件集合
待创建文件集合
是否生成数据库
是否生成sql语句
生成页面用
页面布局对象
样式对象集合
按钮对象集合
动态全局配置参数
生成路径
生成文件选择(页面或后台文件):为已经添加业务代码的模块提供后悔药
修改文件选择(默认读取扩展的xml中所有修改文件)
是否生成sql文件
是否在当前数据库生成表,视图,存储过程
说明:
一个类可以生成多个列表页面和编辑页面,每个页面可以有不同的布局,字段可单独排序,列表有查询功能。
可单独生成某个类文件(之前在做代码生成器的时候,有时候会因为只想添加1个字段而需要重新生成,代码中已经写入业务代码,没办法。。。只能手动修改)
提供模板修改器
可动态修改模板文件,不用重启服务器,模板校验器会根据模板创建的日期判断是否加载
生成sql数据库创建语句文件
保存文件生成日志
生成文件出错后有详细的 log日志
提供预览功能
页面虚拟运行功能,模块虚拟运行功能
可解除模块的配置文件:注掉不用的模块
困难:如果再次生成 如何不替换掉业务代码进行更新操作。。。。。。
以下只有源码,需要自己配置SSH1环境,需要ExtJs,jquery
1.加载所有主配置文件 dom解析
初始化全局变量:
(1)上下文
(2)缓存Manage 永久缓存:主配置文件所有信息,临时缓存:用户配置文件信息
(3)线程池Manage(生成文件时,一个文件一个线程)
2.加载所有用户xml,验证路径和模板文件 sax解析
主配置文件信息将加载到缓存当前
标识符替换模板加载策略:
生成文件时加载标识符替换模板文件,如果已经加载则不再重新加载,由缓存Manage管理生命周期
文件生成策略:
读取模板,替换特定的标识符。
分享到:
相关推荐
1. **引言**:介绍MATLAB天线工具箱的基本概念,文本和MAT软件的组织结构,下载求解器和示例的方法,软件和硬件需求,快速执行流程图,以及工具箱的一些关键特性如网格生成器、基函数生成器、MoM解决方案、天线网格...
cpp-draft 提供的是用于生成C++标准草案的资源,虽然这些草案并不会被ISO公开发布,但它们对开发者理解C++的最新进展和未来可能的变化具有极高的参考价值。本文将深入探讨cpp-draft的内容、作用以及如何利用这些草案...
)加上组织特异性基因表达证据的集合,并为选定的组织或细胞类型生成特定于背景的模型草案。 1) 入门 所有代码均已在Matlab R2014a中进行了测试,但应与该软件的早期版本兼容(至少要追溯到2011-2012年)。 mcadre...
5.2章节描述了翻译的五个阶段,包括预处理、词法分析、解析、语义分析和代码生成。5.3章节明确了C++所使用的字符集,包括ASCII和其他扩展字符。5.4章节的预处理令牌是编译过程中的中间形式,它们在预处理阶段生成。...
它可以是作者的姓名、公司标志,或者是“草案”、“机密”等提示信息。水印的存在不会干扰文档的主要内容,但可以在一定程度上防止未经授权的复制和分发。 在Java中,使用iText库生成PDF水印涉及以下几个关键步骤:...
此外,掌握HTML语言是必不可少的,它用于编写代码来生成网页,通过各种标记描述内容的展示方式。 网站设计的原则包括内容与形式的统一、主题鲜明、风格统一、兼顾下载速度和美观、导航清晰、栏目设置合理以及良好的...
Beyond Compare是一款强大的文件和文件夹对比工具,它不仅可以对比文本文件,还可以处理二进制文件、注册表、源代码等,并且支持多种文件系统和版本控制系统。其界面直观,操作简便,能快速定位并展示文件的差异。 ...
XML2RFCv3是一个用于生成Internet草案和RFC(Request for Comments)文档的工具。它基于XML格式,允许作者以结构化的方式编写文档,然后将其转换为符合RFC标准的ASCII文本、HTML或其他格式。这个工具是互联网工程...
1. **Lattice_GUI_v0a_extended.fig** 和 **Lattice_GUI_v0a_extended.m**:这两个文件分别代表了晶格生成器的图形用户界面(GUI)的布局文件和源代码。MATLAB的GUI允许用户通过交互式界面来设定参数,如晶格的大小...
Python-jose库是针对JavaScript对象签名和加密草案(JOSE,JSON Object Signing and Encryption)的一个Python实现。JOSE是一组互联网标准,旨在提供安全地在JSON格式的数据中进行签名、加密和密钥交换的方法。这一...
"前端开源库-raml-jsonschema-expander"是一个专为前端开发设计的工具,它专注于处理RAML(RESTful API Modeling Language)和JSON Schema之间的交互。 RAML是一种简洁且强大的方式,用于定义RESTful API的结构、...
- **XML IDEs**:如IntelliJ IDEA、Eclipse(带有XML插件),提供代码提示、验证、格式化等功能,提升XML开发效率。 总之,XML编程工具是XML开发者不可或缺的助手,它们可以帮助我们高效地创建、管理、验证和转换...
在这个场景下,Python可能会用于数据处理、分析,甚至构建比赛匹配算法或自动化工具。 描述中提到的"联赛草案"可能涉及到球员或选手的选择、排名、分组等流程,这些都可以通过Python来实现自动化。例如,Python可以...
尽管手册中没有明确地详细介绍Emmet的所有功能,但从提供的信息中,我们可以了解Emmet是一个强大的工具,可以帮助开发者快速准确地编写结构化的代码,极大地节省了开发时间,提高了编码质量。在实际使用过程中,结合...
- **编译指导(Compiler Directives)**:这些指令用于指示编译器如何生成并行代码。例如,`#pragma omp parallel`用于启动一个并行区域。 - **运行时函数库(Runtime Library)**:提供了处理并行线程创建、同步和...
它允许开发者编写能够在不同架构上运行的代码,包括CPU和GPU。OpenCL大大提高了各种应用的速度和响应性,特别是在游戏、娱乐、科学和医疗软件等领域。WebCL是HTML5的一个工作草案,旨在为Web浏览器提供对OpenCL的...
1994年,ANSI公布了C++的标准草案,进一步巩固了其在编程界的地位。C++的特点包括更好的C语言兼容性,支持面向过程和面向对象的混合编程,以及内置的调试和编译功能。 【C语言程序开发步骤】 开发C语言程序通常...
Barcelona Supercomputing Center (BSC)、Codeplay Software和SiFive合作实现了RVV的C API内联函数,并开始构建针对Vector Length Specific (VLS)和Vector Length Agnostic (VLA)的自动向量化代码生成基础。...