
感觉越来越多的项目在使用代码自动生成技术。
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 用 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 |
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 说个认知。需要代码生成的系统(库),一定是不够抽象的系统(库)。 可生成,意味着可模板化 -> 可抽象 -> 可动态(配置)。 我有些自己的库,当要完成一些常用(常见)的功能时,直接调参数就能达到我想要的功能,不需要编程。 |
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 |