感觉越来越多的项目在使用代码自动生成技术。
Dart 用 bult_value
自动生成 JSON 数据解析代码,
Angular 为了简化自身概念的复杂提供了大量生成组建或模块的方法,
很多 Java 工程也在使用逆向工程技术直接生成一个模块再进行修改。
感觉代码自动生成已经成为提高效率的重要手段,你们都用过哪些 code generation 技术?
1
37Y37 2020-10-26 11:02:15 +08:00
|
2
woodensail 2020-10-26 11:04:59 +08:00
自己用 python 写的,逆向数据库生成从 moda-dtol-dao-service-controller 的全流程增删改查 java 代码。
|
3
EscYezi 2020-10-26 13:18:20 +08:00 via iPhone
mybatis generator
|
4
yizmaoaa 2020-10-26 13:18:52 +08:00
Kotlin Kapt 生成过类似 Record 的那种数据库操作的.....
Vert.x 项目的 CodeGen,Vert.x 的多语言都是使用 CodeGen 生成的 API 。。 |
5
monsterxx03 2020-10-26 13:21:54 +08:00 1
用 yacc 做一个 sql 子集
|
6
eason1874 2020-10-26 13:33:13 +08:00
好像只做过一些循环展开
|
7
lemonTreeTop 2020-10-26 13:55:03 +08:00
用 ftl 算不算🤗
|
8
hccsoul 2020-10-26 13:57:30 +08:00 via iPhone
人人开源
|
9
wysnylc 2020-10-26 14:38:42 +08:00
idea get/set
|
10
wmhx 2020-10-26 14:48:50 +08:00
我见过最早的代码生成器 rapid-framework , 已经是非常好用了, 只是有些时日不更新了, 作者也不知道干啥去了.
|
11
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 原则是编写代码的基本要领。 |
12
iseki 2020-10-26 15:17:42 +08:00
vert.x 自带的 Service codegen 有点简陋(?) 所以自己做了一个
|
13
momocraft 2020-10-26 15:18:59 +08:00
protobuf/grpc
openapi 各种宏 |
14
isir1234 2020-10-26 15:19:38 +08:00 1
|
15
Sapp 2020-10-26 15:23:30 +08:00
根据接口文档自动生成 typescript 的 interface 和调接口的函数
|
16
ReinerShir 2020-10-26 15:26:26 +08:00
同 2 楼,目前能想到自动生成的东西也就这些
|
17
qwerthhusn 2020-10-26 16:17:21 +08:00
WSDL 生成 Stub
|
18
coderxy 2020-10-26 16:27:56 +08:00
grpc 的 protoc-gen 插件
|
19
lawler 2020-10-26 16:28:46 +08:00 1
说个认知。需要代码生成的系统(库),一定是不够抽象的系统(库)。
可生成,意味着可模板化 -> 可抽象 -> 可动态(配置)。 我有些自己的库,当要完成一些常用(常见)的功能时,直接调参数就能达到我想要的功能,不需要编程。 |
20
DoctorCat 2020-10-26 17:43:19 +08:00
@woodensail 兄弟牛逼, 能否开源出来白嫖一下子?
|
21
Takamine 2020-10-26 17:46:00 +08:00 via Android
用 python 写的直接读 excel 生成 Java 文件。_(:з」∠)_
|
22
zunceng 2020-10-26 17:53:15 +08:00
简单点的 template 复杂的上 ast
|
24
SaigyoujiYuyuko 2020-10-26 17:57:29 +08:00
getter setter constructor (
|
25
Asuka0947 2020-10-26 17:57:39 +08:00
jpa 算吗?
|
26
bleepbloop 2020-10-26 18:04:03 +08:00
flask-admin, flask-graphql, grpc, openapi, orm......
|
27
DoctorCat 2020-10-26 18:04:20 +08:00
anltr 生成一套简单的规则语言算么。btw 我突然想起了 thrift 的 code generation 过程…
|
28
ho121 2020-10-26 18:24:52 +08:00 via Android
excel
|
29
changwei 2020-10-26 18:40:06 +08:00 via Android
我用 idea 的 file template,自动生成一些脚手架代码(比如 react 里面的 with router,redux 的 connect,我改好文件模板以后,新建 tsx 文件会自动包裹好这些 hoc 高阶组件然后 export )
|
30
loshine1992 2020-10-26 18:48:01 +08:00
Android apt 生成统计代码
|
31
yplam 2020-10-26 19:04:34 +08:00 via Android
后端 crud 顺便提供了 pro table 初始模板生成接口,然后顺便把简单的 crud 前端也做了。。。
|
32
secondwtq 2020-10-26 19:49:01 +08:00 via iPhone
那可多了,包括且不限于 GCC,Clang,Babel,tsc,javac,HotSpot……
|
33
woodensail 2020-10-26 20:04:13 +08:00
@DoctorCat 还是刚工作的时候写的,早丢了。没啥技术含量。基本上就是模板生成,然后把字段名替换一下就行。
|
34
h3nng 2020-10-26 20:09:50 +08:00 via iPhone
codemodel 、gandiva
|
36
dbskcnc 2020-10-26 20:25:30 +08:00
从 protobuf 生成 sql,grpc crud 接口
|
37
nuk 2020-10-26 20:26:41 +08:00
从 sql 还有注释,生成一大堆存储过程,还是我第一次用 peg 来做语法分析
|
38
missdeer 2020-10-26 20:27:34 +08:00
jinja2, swig 做胶水层
|
39
raaaaaar 2020-10-27 07:26:17 +08:00 via Android
IDE 自带的算么,感觉挺好用的。
|
40
dany813 2020-10-27 09:21:03 +08:00
自己定义模板
|
41
threeEggs123 2020-10-27 13:13:26 +08:00 via Android
|
42
shuianfendi6 2020-10-27 16:24:58 +08:00
tscfg
|