一个简陋的代码生成器

2023-10-18 18:40
文章标签 代码生成 简陋

本文主要是介绍一个简陋的代码生成器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    由于最近工作任务多,但是开发的内容却是千篇一律的接口开发。所以为了能够学以致用,也为了能够减少浪费生命在无效的业务工作中。于是我决定开发一个自己专用的业务代码生成工具。

    说干就干,考虑到目前所用的框架结构为springboot + dubbo。于是我需要生成大概6个文件。分别是消费者工程中的controller,req请求实体类。api工程中的响应实体类mall,服务接口service以及提供者工程中的serviceImpl类。当然还有自动生成的配置文件内容集中放在一个txt文件中。于是为了生成这几个类文件。我首先写下了如下代码:

def main(args: Array[String]): Unit = {
  val fileName = input
  actionFile(fileName)
  mallFile(fileName)
  reqFile(fileName)
  serviceFile(fileName)
  serviceImplFile(fileName)
  configFile(fileName)
}

获取输入,并生成一大堆文件。当然输入是为了手动输入文件名,然后根据文件名生成请求的url啊,文件名啊 ,方法名之类的东西。获取输入的代码如下:

命令行读入,没啥可说的。然后是创建文件的过程。以最复杂的controller(即前面的actionFile方法)为例:

根据方法名很容易理解。创建文件,创建输入流,写入important内容,写入文件头比如注解啊 ,类名啊,方法名等。然后换行写入正文,写入结尾最后关闭流。基本上所有的文件都遵从这个流程。当然有些文件较为简单就不需要全部的步骤。唯一值得一看的代码应该是创建文件的代码了,代码如下:

创建各种文件的方法其实是调用同一个方法createFile。然后传入不同的后缀名生成对应的文件。其他的代码就全是业务代码的字符串,没啥可以说的内容。动态生成的地方全在于字符串拼接,所以这里不得不赞扬一下scala的$标识符可以很方便的在字符串中嵌入变量,类似代码如下:

变量类型,注解中的url以及返回类型的动态生成都依赖于这个好用的$标识符。可以想象如果用Java来写会变成什么样(当然我不是黑我可爱的Java)。

    大概的思路和实现过程如上所述。这其实只是一个半残疾的代码生成。但是已经可以减少我的一部分工作量。未来如果有更多类似接口的开发,可能会再寻找更多的抽象点来简化工作。虽然这个代码生成器简陋而残破,却让我感受到了自己学习的一点点价值,这真是极好的。

这篇关于一个简陋的代码生成器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/234445

相关文章

LLVM入门2:如何基于自己的代码生成IR-LLVM IR code generation实例介绍

概述 本节将通过一个简单的例子来介绍如何生成llvm IR,以Kaleidoscope IR中的例子为例,我们基于LLVM接口构建一个简单的编译器,实现简单的语句解析并转化为LLVM IR,生成对应的LLVM IR部分,代码如下,文件名为toy.cpp,先给出代码,后面会详细介绍每一步分代码: #include "llvm/ADT/APFloat.h"#include "llvm/ADT/S

jeecg——代码生成器配置

1.修改 数据源连接配置文件resources/jeecg/jeecg_database.properties

芋道源码微服务新建新的模块及代码生成器使用

目录 概述实践新建模块代码生成配置数据源代码生成拷贝代码pom.xml 其它的 问题redis权限配置 效果 结束 概述   芋道源码微服务新建新的模块及代码生成器使用。主要分三块,建立新的模块,代码生成及运行过程中的问题解决。 实践 新建模块   参考芋道源码本身的架构,新建的工程架构如下图所示,代码生成器也会生成对应的架构,但没有pom.xml这些配置文件,需要自己添加

Simulink代码生成:目标硬件配置

本文研究Simulink中关于目标硬件相关的配置。 文章目录 1 目标硬件的含义2 Simulink中的硬件配置3 代码中的位长度信息4 总结 1 目标硬件的含义 不管运行什么软件,都是无法离开硬件单独运行的。我们生活中常见的笔记本电脑、手机等都是硬件。 对于汽车嵌入式软件而言,目标硬件就是嵌入式控制器,譬如博主工作中所用的TC27X系列。在Simulink的配置中必须明确指定

Simulink代码生成: For Iterator子系统及其代码

本文研究Simulink中的For Iterator子系统及其生成的代码。 文章目录 1 Simulink中的For Iterator子系统2 For Iterator子系统建模示例3 For Iterator子系统的代码4 总结 1 Simulink中的For Iterator子系统 不管是在C语言还是Matlab脚本编程的时候,都避免不了使用for循环来反复执行某一段代码。在

Simulink代码生成:学习Simulink以及生成代码

本文介绍博主自己学习Simulink和Embedded Coder的方法。后续博客都会按照本文中的思路来记录博主学习的过程。 文章目录 1 Simulink模型2 Simulink配置3 Simulink生成的代码4 关于S函数和tlc文件5 实战 1 Simulink模型 通过建立正确的模型并且Update通过是生成代码的基础。所以生成代码的第一步是建模。 根据博主工作经验,

Simulink代码生成: Relay模块及其代码

本文研究Relay模块的用法和该模块生成的代码。 文章目录 1 Simulink中的Relay模块2 Relay模块建模3 Relay模块的代码4 总结 1 Simulink中的Relay模块 Relay这个单词有中继设备的含义,在Simulink中,博主将其理解为一个带有缓冲区的开关。 在配置界面可以配置Relay模块的阈值上限、阈值下限和输出的数值。 2 Relay模块建

Simulink代码生成:AliasType配置

AliasType也是Simulink数据字典中的一种对象。本文研究在数据字典中配置AliasType以及生成的代码。 文章目录 1 问题引入2 AliasType的建立和使用3 代码生成研究4 总结 1 问题引入 在Simulink中的数据类型有single,double,uint和int这些基本础类型,也可以给这些基本类型定义一个别名,这就是AliasType的概念。定义好A

Simulink代码生成:数据字典的建立、关联模型

本文介绍如何建立Simulink数据字典,并关联模型。 文章目录 1 数据字典的作用2 数据对象的简单概念3 数据对象的管理方式3.1 mat文件或m文件3.2 Excel表格&m脚本3.3 Simulink自带的数据字典文件 4 建立和关联Simulink数据字典文件5 sldd数据字典的一些说明6 总结 1 数据字典的作用 简单来说,数据字典的作用就是把一个模型用到的所有数据

JAVA:使用Generator生成器实现代码生成的技术指南

请关注微信公众号:拾荒的小海螺 博客地址:http://lsk-ww.cn/ 1、简述 在软件开发中,尤其是企业应用开发中,重复编写CRUD代码(创建、读取、更新、删除)是一项耗时且容易出错的任务。为了提高开发效率,许多开发者会使用代码生成器来自动生成这些重复的代码。本文将介绍如何使用Renren-Generator代码生成器来实现这一目标。 2、准备工作 在开始使用Renren-Gen