你们在实际工作中用过哪些代码自动生成技术?

2020-10-26 10:46:07 +08:00
 Hanggi

感觉越来越多的项目在使用代码自动生成技术。

Dart 用 bult_value 自动生成 JSON 数据解析代码, Angular 为了简化自身概念的复杂提供了大量生成组建或模块的方法, 很多 Java 工程也在使用逆向工程技术直接生成一个模块再进行修改。

感觉代码自动生成已经成为提高效率的重要手段,你们都用过哪些 code generation 技术?

6229 次点击
所在节点    程序员
42 条回复
37Y37
2020-10-26 11:02:15 +08:00
woodensail
2020-10-26 11:04:59 +08:00
自己用 python 写的,逆向数据库生成从 moda-dtol-dao-service-controller 的全流程增删改查 java 代码。
EscYezi
2020-10-26 13:18:20 +08:00
mybatis generator
yizmaoaa
2020-10-26 13:18:52 +08:00
Kotlin Kapt 生成过类似 Record 的那种数据库操作的.....

Vert.x 项目的 CodeGen,Vert.x 的多语言都是使用 CodeGen 生成的 API 。。
monsterxx03
2020-10-26 13:21:54 +08:00
用 yacc 做一个 sql 子集
eason1874
2020-10-26 13:33:13 +08:00
好像只做过一些循环展开
lemonTreeTop
2020-10-26 13:55:03 +08:00
用 ftl 算不算🤗
hccsoul
2020-10-26 13:57:30 +08:00
人人开源
wysnylc
2020-10-26 14:38:42 +08:00
idea get/set
wmhx
2020-10-26 14:48:50 +08:00
我见过最早的代码生成器 rapid-framework , 已经是非常好用了, 只是有些时日不更新了, 作者也不知道干啥去了.
tikazyq
2020-10-26 15:00:21 +08:00
crawlab 中的可配置爬虫就是用 golang 来生成的 scrapy 爬虫[doge]

其实吧,从广义来看,将高级语言编译成底层语言或机器码,也可以算做是 code generation 。在 js 中 code generation 多了去了,各种 ts 、vue 、jsx 转原生 js,现代前端基本就是建立在 code generation 上的。为什么会需要 code generation,因为需要抽象、复用、提升代码效率,KISS 原则是编写代码的基本要领。
iseki
2020-10-26 15:17:42 +08:00
vert.x 自带的 Service codegen 有点简陋(?) 所以自己做了一个
momocraft
2020-10-26 15:18:59 +08:00
protobuf/grpc
openapi
各种宏
isir1234
2020-10-26 15:19:38 +08:00
魔改了一下 start.spring.io, 根据 sql 生成 domain, mapper, service, controller

http://start.jiangy.me/
Sapp
2020-10-26 15:23:30 +08:00
根据接口文档自动生成 typescript 的 interface 和调接口的函数
ReinerShir
2020-10-26 15:26:26 +08:00
同 2 楼,目前能想到自动生成的东西也就这些
qwerthhusn
2020-10-26 16:17:21 +08:00
WSDL 生成 Stub
coderxy
2020-10-26 16:27:56 +08:00
grpc 的 protoc-gen 插件
lawler
2020-10-26 16:28:46 +08:00
说个认知。需要代码生成的系统(库),一定是不够抽象的系统(库)。
可生成,意味着可模板化 -> 可抽象 -> 可动态(配置)。

我有些自己的库,当要完成一些常用(常见)的功能时,直接调参数就能达到我想要的功能,不需要编程。
DoctorCat
2020-10-26 17:43:19 +08:00
@woodensail 兄弟牛逼, 能否开源出来白嫖一下子?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/718572

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX