通用代码生成器典型应用场景
1. 通用代码生成器简介
通用代码生成器或称动词算子式通用代码生成器,是一系列各种语言的易用的整站式代码生成器。其根本原理是把方法分解成动词算子和域对象的笛卡儿积。根据动词算子式代码生成器的基本原理。所有方法,都是动词算子和域对象的结合。是一个表级抽象的方法堆栈。域对象代表一张数据库表。在动词算子式代码生成器的默认里,域对象有ID,Name和Active三个特殊字段。而动词算子需要的表,字段的信息都打包在域对象里,这就是表级抽象。动词算子也有不同的类别,比如单域动词和双域动词。单域动词需要结合一个域对象。而双域动词需要结合两个域对象。通用代码生成器阵列支持四个双域动词,Assign,Revoke,ListMyActive和ListMyAvailableActive都是为支持域对象之间的多对多关系准备的。
通用代码生成器的优点是弹性,准确性和整站生成的高劳动生产率。这是由动词算子式代码生成器的基本原理决定的。一般而言,其前端和后端代码生成器都可以直接运行。没有编译错误。非常方便。主力的通用代码生成器可以同时生成两个压缩包,一个是前端代码生成物,一个是后端代码生成物。都可以直接编译运行,提供了完整的代码生成的源代码。非常方便使用。
以下是常见的动词算子式代码生成器:
无垠式代码生成器
无垠式代码生成器JEEEU版 https://gitee.com/jerryshensjf/InfinityJEEEU
无垠式代码生成器https://gitee.com/jerryshensjf/InfinityGPGenerator
无垠式代码生成器SimpleJEE版https://gitee.com/jerryshensjf/InfinitySimpleJEE
和平之翼代码生成器
和平之翼代码生成器SMEU版:https://gitee.com/jerryshensjf/PeaceWingSMEU
和平之翼代码生成器SHCEU版:https://gitee.com/jerryshensjf/PeaceWingSHCEU
第三代动词算子式代码生成器:光
https://gitee.com/jerryshensjf/LightSBMEU
第四代动词算子式代码生成器:时空之门前端代码生成器
https://gitee.com/jerryshensjf/GatesCore
GO 语言通用代码生成器:仙童
https://gitee.com/jerryshensjf/Fairchild
Java 通用代码生成器:阿拉丁神灯
https://gitee.com/jerryshensjf/Lamp
Rust 通用代码生成器:莲花
https://gitee.com/jerryshensjf/Lotus
下面是六个常见的通用代码生成器应用场景
2. 项目前期
通用代码生成器是一种自动化编程软件,是一种先进的编译系统。它具有表级抽象。把系统抽象为域对象,枚举,弹性登录模块,复杂版面和图形报表。使用通用代码生成器完成项目前期,比直接使用对应的高级语言快的多,也方便的多。
在常规的项目开发阶段,可以分为前期,中期和后期。前期完成设计,数据库设计,项目初始化,数据库初始化和CRUD等常用功能的开发。
中期是各种业务功能的开发。
业务功能开发完成后,项目即进入后期。后期主要是测试,修错。完成项目Change Request和基线化,代码冻结。构建软件发布包,给客户安装,用户培训等等。
当客户签章认可软件交付物,软件的开发阶段就结束了,进入了软件的售后服务阶段。
通用代码生成器对软件开发而言,在项目前期的价值最大。它可以把月余的项目前期压缩到短短数日。从而为您的设计和开发增加数周的时间。用于设计,您可以更加详细。用于开发,大大缓解开发时间的紧张。而且,由于通用代码生成器的高生产率,您可以采用多轮设计,采用迭代式的项目设计循环,使设计阶段结束时,系统更全面更一致,同时仍然可以节约数周的时间帮助开发阶段。
通用代码生成器为项目全周期迭代式的使用通用代码生成器做了优化。它可以精确的控制代码生成物。可以按水平层级或者按竖直功能选择性的输出代码生成物,并可以同时使用水平和竖直的控制功能。最强大的是,您可以上传同一个项目的不同时期的SGS2模板,系统会对比两个版本,自动生成两个版本的差异部分,而一致的,它不输出。利用这个功能,您可以定向,只修改更改的部分,结合归并工具的功能,可以成数量级的提高劳动生产率。
3. 快速原型
对项目经理,产品经理和售前工程师而言,开发快速原型是一种常见的需求。使用通用代码生成器,您可以更好,更快的开发系统的快速原型。通用代码生成器对完成CRUD和登录系统阶段的快速原型比手工编程快的多,典型情况,您可以使用一天时间完成如此规格的快速原型,而直接编程,您可能至少需要两周时间才可以达到同样的完成度。故使用通用代码生成器,您可以更快的完成快速原型,您也有更多的时间,使您的原型达到更高的完成度。
并且,通用代码生成器有专门为快速原型设计的哑数据模式。此模式不使用数据库,而是使用硬编码的哑数据作为数据来源,它方便您给不同的客户多次演示,不需要担心数据遗留问题。只需要重新启动,数据即回归到原始数据,没有搞错演示数据的烦恼。而且,您可以和您的客户共享此快速原型。客户可以深入研究此快速原型,但无法直接使用此快速原型,因为此快速原型没有数据持久化功能。对双方都很方便。
4. 遗留项目反向工程
如果您有一个遗留项目,要重新开发,或者源代码遗失,或者需要重新开发,但是希望复用原来的数据,并加快开发。
如果您的项目是通用代码生成器生成的,如果您保留了它的SGS源文件或SGS2的Excel模板,您可以使用这些资源重新生成。
但是大多数遗留项目都没有这些资源,或者本来就不是通用代码生成器生成的。这种情况下,您只需要有系统的数据库,并且,这个数据库是MariaDB,MySQL或者PostgreSQL的。您就可以使用Rust通用代码生成器莲花的数据库自动反射功能来反向工程这种遗留项目。借助这个功能,您可以把一个数据库反射为一个莲花的Project。并可以进一步将数据库反射为一个Rust语言项目或者一个莲花的SGS2模板。
借助Java通用代码生成器光和Golang通用代码生成器仙童的Rust语言兼容性。您可以把这个莲花的SGS2模板生成为Java语言项目或Golang语言项目。
这个数据库自动反射功能可以保留原系统的数据,您不需要重新开始。
5. 跨编程语言翻译
如果您有一个Java工程,想把它移植到Rust或Golang语言中去,希望尽可能加快研发速度。
如果您的系统是通用代码生成器开发的,保留了系统的SGS源文件或者SGS2的Excel模板,您可以使用这些源文件或模板结合您的目标语言生成新语言的代码生成物,以加速新语言的应用程序的开发。
如果您没有保留此源文件或模板,或者您的应用系统是手工搭建的或使用了其他来源。您可以使用数据库自动反射功能达到需求。如果您使用的是MariaDB,MySQL或者PostgreSQL。您可以使用Rust通用代码生成器莲花新版本的数据库自动反射功能,将数据库反射成Rust应用程序,您也可以将数据库反射为一个SGS2的Excel模板。而后通过Java通用代码生成器光或Golang通用代码生成器的Rust语言兼容性功能,将此SGS2模板编译成Java或Golang的应用程序,在此过程中,您可以保留数据库中的所有数据,不必从零开始。
6. 任意需求应用急就章
在中国文化中,如果您在任何的政府,商业或者私人事务上需要表明身份。您需要一枚自己的私章。如果在必须的场合,您没有此私章。如果您知道如何刻写图章,可以临时使用普通的石料甚至萝卜,肥皂等等,刻写一个临时性的图章使用,这就是所谓的急就章。
通用代码生成器也有类似功能。如果您有一个业务或者需求,但是您没有现成的电子商务系统,您往往是使用Excel表格或者Acess数据库来完成这些功能的簿记和管理工作。但这种方法有明显缺陷,首先,如果随着业务的流转,多人手头有不同的Excel表单,如果数据不一致,您很难找出正确的答案,而且,没有统一的密码和登录系统,容易泄密和忘记密码。
有了通用代码生成器,可以完美的解决这一问题。您可以利用和写一个Excel表单同等的时间写一个SGS2的Excel模板,利用代码生成器生成一个系统临时凑和着用,几乎是零成本的。您可以轻易的拥有数据库管理系统的全部优势,就是特定功能少一些而已,而数据库的簿记功能可以完美的使数据一致性问题,多人同步工作问题完美解决。同时,您零成本的拥有了一个完善的系统的密码和登录系统,每个人可以维护自己的密码,而系统管理员也可以有效的管理,支持和急救。
所以,通用代码生成器的代码生成物是可以直接使用的,它有完善的通用功能,就是没有定制功能而已,对于任何需求,这种代码生成物都远远优于Excel表格,而成本是一样的。通用代码生成器的代码生物可以完成完善的电子商务系统70%的功能。这就是通用代码生成器的急就章功能。
7. 为完善的应用系统收集需求
使用急就章功能可以开发一个简单的应用先凑和着使用。此应用系统也可以成为完善的应用系统的原型和祖先。如果您新规划一个完善的应用系统,您可以先使用通用代码生成器生成一个临时使用的系统,并在实际的使用中收集需求和现用系统的不足,然后您可以使用手工编程完善此系统,得到一个完善的应用系统。
使用数据库自动反射功能,您可以把原型系统内的您需要的数据迁徙到新的完善的应用系统,而不必从零开始。
8.初学者学习使用
通用代码生成器是一种非常方便初学者学习软件开发的得力工具。
对初学者而言,最需要的就是完整,准确和可以运行的示例程序,尤其是初学者的“第一个系统”。而通用代码生成器在这方面,对初学者有极大的帮助。
当初学者完成了他的Hello world。他可以使用通用代码生成器的示例,比如说One示例,生成一个只有一个域对象的简单系统。他可以得到两个压缩包,分别是One示例的后端和前端。利用这两个例程,初学者可以熟悉某个语言,某个技术栈的完整的后端技术。也可以熟悉和后端搭配使用的运行在Nodejs上的Vue,ElementUI的独立前端。初学者可以运行,抄写,并复现此示例。
当初学者学习完基础示例的CRUD。就可以使用带登录系统的示例进一步学习和抄写。比如CivMariaSample示例。相比于One示例,它要大型的多。包含登录系统,复杂版面和图形报表,还有多对多关系。当初学者完成对此示例的抄写,他就不再是初学者了,他已经入门了。