`

代码生成工具设计(草案)

阅读更多

编写代码生成工具的缘由

本人在应用开发部已经待了快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管理生命周期

文件生成策略:

      读取模板,替换特定的标识符。

     

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    matlab antenna toolbox a draftmatlab工具箱草案天线.pdf

    1. **引言**:介绍MATLAB天线工具箱的基本概念,文本和MAT软件的组织结构,下载求解器和示例的方法,软件和硬件需求,快速执行流程图,以及工具箱的一些关键特性如网格生成器、基函数生成器、MoM解决方案、天线网格...

    cpp-draft是用来生成C标准的草案资源

    cpp-draft 提供的是用于生成C++标准草案的资源,虽然这些草案并不会被ISO公开发布,但它们对开发者理解C++的最新进展和未来可能的变化具有极高的参考价值。本文将深入探讨cpp-draft的内容、作用以及如何利用这些草案...

    matlab如何敲代码-mcadre:通过确定性React评估(mCADRE)评估代谢上下文相关性,以生成组织特异性代谢模型草案

    )加上组织特异性基因表达证据的集合,并为选定的组织或细胞类型生成特定于背景的模型草案。 1) 入门 所有代码均已在Matlab R2014a中进行了测试,但应与该软件的早期版本兼容(至少要追溯到2011-2012年)。 mcadre...

    C++23版本的最终草案

    5.2章节描述了翻译的五个阶段,包括预处理、词法分析、解析、语义分析和代码生成。5.3章节明确了C++所使用的字符集,包括ASCII和其他扩展字符。5.4章节的预处理令牌是编译过程中的中间形式,它们在预处理阶段生成。...

    JAVA PDF 水印生成

    它可以是作者的姓名、公司标志,或者是“草案”、“机密”等提示信息。水印的存在不会干扰文档的主要内容,但可以在一定程度上防止未经授权的复制和分发。 在Java中,使用iText库生成PDF水印涉及以下几个关键步骤:...

    推选专题学习网站的设计与开发PPT实用.ppt

    此外,掌握HTML语言是必不可少的,它用于编写代码来生成网页,通过各种标记描述内容的展示方式。 网站设计的原则包括内容与形式的统一、主题鲜明、风格统一、兼顾下载速度和美观、导航清晰、栏目设置合理以及良好的...

    文件对比工具

    Beyond Compare是一款强大的文件和文件夹对比工具,它不仅可以对比文本文件,还可以处理二进制文件、注册表、源代码等,并且支持多种文件系统和版本控制系统。其界面直观,操作简便,能快速定位并展示文件的差异。 ...

    xml2rfcv3-faq:xml2rfc常见问题解答(用于创建Internet草案和RFC的工具)

    XML2RFCv3是一个用于生成Internet草案和RFC(Request for Comments)文档的工具。它基于XML格式,允许作者以结构化的方式编写文档,然后将其转换为符合RFC标准的ASCII文本、HTML或其他格式。这个工具是互联网工程...

    MATLAB设计_用于增材制造的STL格式晶格发生器程序.zip

    1. **Lattice_GUI_v0a_extended.fig** 和 **Lattice_GUI_v0a_extended.m**:这两个文件分别代表了晶格生成器的图形用户界面(GUI)的布局文件和源代码。MATLAB的GUI允许用户通过交互式界面来设定参数,如晶格的大小...

    Python-joseJavaScript对象签名和加密草案的实现

    Python-jose库是针对JavaScript对象签名和加密草案(JOSE,JSON Object Signing and Encryption)的一个Python实现。JOSE是一组互联网标准,旨在提供安全地在JSON格式的数据中进行签名、加密和密钥交换的方法。这一...

    前端开源库-raml-jsonschema-expander

    "前端开源库-raml-jsonschema-expander"是一个专为前端开发设计的工具,它专注于处理RAML(RESTful API Modeling Language)和JSON Schema之间的交互。 RAML是一种简洁且强大的方式,用于定义RESTful API的结构、...

    xml编程工具

    - **XML IDEs**:如IntelliJ IDEA、Eclipse(带有XML插件),提供代码提示、验证、格式化等功能,提升XML开发效率。 总之,XML编程工具是XML开发者不可或缺的助手,它们可以帮助我们高效地创建、管理、验证和转换...

    联赛草案

    在这个场景下,Python可能会用于数据处理、分析,甚至构建比赛匹配算法或自动化工具。 描述中提到的"联赛草案"可能涉及到球员或选手的选择、排名、分组等流程,这些都可以通过Python来实现自动化。例如,Python可以...

    ZenCoding手册

    尽管手册中没有明确地详细介绍Emmet的所有功能,但从提供的信息中,我们可以了解Emmet是一个强大的工具,可以帮助开发者快速准确地编写结构化的代码,极大地节省了开发时间,提高了编码质量。在实际使用过程中,结合...

    OpenMP 程序设计

    - **编译指导(Compiler Directives)**:这些指令用于指示编译器如何生成并行代码。例如,`#pragma omp parallel`用于启动一个并行区域。 - **运行时函数库(Runtime Library)**:提供了处理并行线程创建、同步和...

    opengl计算机三维图形程序设计三维程序设计-opengl.ppt

    它允许开发者编写能够在不同架构上运行的代码,包括CPU和GPU。OpenCL大大提高了各种应用的速度和响应性,特别是在游戏、娱乐、科学和医疗软件等领域。WebCL是HTML5的一个工作草案,旨在为Web浏览器提供对OpenCL的...

    C1-C++介绍V1.0.1(ppt文档).pptx

    1994年,ANSI公布了C++的标准草案,进一步巩固了其在编程界的地位。C++的特点包括更好的C语言兼容性,支持面向过程和面向对象的混合编程,以及内置的调试和编译功能。 【C语言程序开发步骤】 开发C语言程序通常...

    20210626-廖春玉-LLVM的RISCV支持现状和经验1

    Barcelona Supercomputing Center (BSC)、Codeplay Software和SiFive合作实现了RVV的C API内联函数,并开始构建针对Vector Length Specific (VLS)和Vector Length Agnostic (VLA)的自动向量化代码生成基础。...

Global site tag (gtag.js) - Google Analytics