【平台开发】技术整合思考(五)代码生成代码

简介: 【平台开发】技术整合思考(五)代码生成代码

一、背景


首先简要介绍写反射技术(reflect)。


反射技术(reflect)是一种能够在程序运行时动态访问、修改某个类中任意属性(状态)和方法(行为)的机制。它可以完成以下几个功能:在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法

七镜在开发语言的深度理解上其实并没有多深入,知道写技术框架的那些大神,经常会使用反射技术(reflect)来复用一些逻辑代码,实现高度的可复用性。


对反射技术理解的不深入的前提下,有没有其他办法来来编写框架呢?有的,有个简单好理解的路子:代码生成代码




二、以七镜的博客平台服务端里常见的增删改查为例,代码生成代码的步骤如下:


  1. 正常实现业务逻辑:包含实体结构体名、数据库访问代码、graphql schema定义、graphql endpoint定义等等。
  2. 从大量的重复代码中,找到复用点:结构体名。通常一个实体A的结构体名,对应一串A的增删改查代码,将实体A的增删改查代码里的结构体名A修改成另一个结构体名B之后,就变成了实体B对应的一串增删改查代码了。
  3. 编写生成代码的代码。根据第2步里的复用点,将实体A的代码文件(比如user.go)读取成字符串,将字符串里的结构体名A,替换成结构体名B,保存到实体B的代码文件(比如comment.go)中即可。
目录
相关文章
|
Linux Shell Windows
Linux如何检查文件夹的大小?
在Linux中查看文件夹大小,可使用`du`(如`du -sh *`)、`df`(如`df -h /home`)查看磁盘使用情况,`ncdu`提供交互式浏览,`ls -lh`显示当前目录文件大小,`find`与`du`结合找大文件夹,`tree --du -h`展示目录结构及大小,或用`awk`与`du`组合按大小排序。不同场景下,这些命令各有优势。
876 1
Linux如何检查文件夹的大小?
|
Kubernetes Cloud Native 容器
完全免费的K8S学习平台:在线集群环境助力你的云原生之路!
完全免费的K8S学习平台:在线集群环境助力你的云原生之路!
3220 1
|
存储 消息中间件 API
FreeRTOS入门教程(堆和栈)
FreeRTOS入门教程(堆和栈)
631 0
|
JavaScript API
vue 异步网络请求 axios 【实用教程】(含访问本地接口)
vue 异步网络请求 axios 【实用教程】(含访问本地接口)
234 0
|
1天前
|
云安全 监控 安全
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
821 5
|
12天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
1053 37