• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Hanggi
V2EX  ›  程序员

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

  •  
  •   Hanggi · Oct 26, 2020 · 7577 views
    This topic created in 2049 days ago, the information mentioned may be changed or developed.

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

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

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

    42 replies    2020-10-27 16:24:58 +08:00
    37Y37
        1
    37Y37  
       Oct 26, 2020
    woodensail
        2
    woodensail  
       Oct 26, 2020
    自己用 python 写的,逆向数据库生成从 moda-dtol-dao-service-controller 的全流程增删改查 java 代码。
    EscYezi
        3
    EscYezi  
       Oct 26, 2020 via iPhone
    mybatis generator
    yizmaoaa
        4
    yizmaoaa  
       Oct 26, 2020
    Kotlin Kapt 生成过类似 Record 的那种数据库操作的.....

    Vert.x 项目的 CodeGen,Vert.x 的多语言都是使用 CodeGen 生成的 API 。。
    monsterxx03
        5
    monsterxx03  
       Oct 26, 2020   ❤️ 1
    用 yacc 做一个 sql 子集
    eason1874
        6
    eason1874  
       Oct 26, 2020
    好像只做过一些循环展开
    lemonTreeTop
        7
    lemonTreeTop  
       Oct 26, 2020
    用 ftl 算不算🤗
    hccsoul
        8
    hccsoul  
       Oct 26, 2020 via iPhone
    人人开源
    wysnylc
        9
    wysnylc  
       Oct 26, 2020
    idea get/set
    wmhx
        10
    wmhx  
       Oct 26, 2020
    我见过最早的代码生成器 rapid-framework , 已经是非常好用了, 只是有些时日不更新了, 作者也不知道干啥去了.
    tikazyq
        11
    tikazyq  
       Oct 26, 2020
    crawlab 中的可配置爬虫就是用 golang 来生成的 scrapy 爬虫[doge]

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

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

    我有些自己的库,当要完成一些常用(常见)的功能时,直接调参数就能达到我想要的功能,不需要编程。
    DoctorCat
        20
    DoctorCat  
       Oct 26, 2020
    @woodensail 兄弟牛逼, 能否开源出来白嫖一下子?
    Takamine
        21
    Takamine  
       Oct 26, 2020 via Android
    用 python 写的直接读 excel 生成 Java 文件。_(:з」∠)_
    zunceng
        22
    zunceng  
       Oct 26, 2020
    简单点的 template 复杂的上 ast
    EdwardXia
        23
    EdwardXia  
       Oct 26, 2020
    @DoctorCat 哈哈哈哈哈哈问出了我想问的
    SaigyoujiYuyuko
        24
    SaigyoujiYuyuko  
       Oct 26, 2020
    getter setter constructor (
    Asuka0947
        25
    Asuka0947  
       Oct 26, 2020
    jpa 算吗?
    bleepbloop
        26
    bleepbloop  
       Oct 26, 2020
    flask-admin, flask-graphql, grpc, openapi, orm......
    DoctorCat
        27
    DoctorCat  
       Oct 26, 2020
    anltr 生成一套简单的规则语言算么。btw 我突然想起了 thrift 的 code generation 过程…
    ho121
        28
    ho121  
       Oct 26, 2020 via Android
    excel
    changwei
        29
    changwei  
       Oct 26, 2020 via Android
    我用 idea 的 file template,自动生成一些脚手架代码(比如 react 里面的 with router,redux 的 connect,我改好文件模板以后,新建 tsx 文件会自动包裹好这些 hoc 高阶组件然后 export )
    loshine1992
        30
    loshine1992  
       Oct 26, 2020
    Android apt 生成统计代码
    yplam
        31
    yplam  
       Oct 26, 2020 via Android
    后端 crud 顺便提供了 pro table 初始模板生成接口,然后顺便把简单的 crud 前端也做了。。。
    secondwtq
        32
    secondwtq  
       Oct 26, 2020 via iPhone
    那可多了,包括且不限于 GCC,Clang,Babel,tsc,javac,HotSpot……
    woodensail
        33
    woodensail  
       Oct 26, 2020
    @DoctorCat 还是刚工作的时候写的,早丢了。没啥技术含量。基本上就是模板生成,然后把字段名替换一下就行。
    h3nng
        34
    h3nng  
       Oct 26, 2020 via iPhone
    codemodel 、gandiva
    no1xsyzy
        35
    no1xsyzy  
       Oct 26, 2020
    @lawler 异议!
    抽象到极致的也可以是通过代码生成实现的,比如 Lisp 宏
    dbskcnc
        36
    dbskcnc  
       Oct 26, 2020
    从 protobuf 生成 sql,grpc crud 接口
    nuk
        37
    nuk  
       Oct 26, 2020
    从 sql 还有注释,生成一大堆存储过程,还是我第一次用 peg 来做语法分析
    missdeer
        38
    missdeer  
       Oct 26, 2020
    jinja2, swig 做胶水层
    raaaaaar
        39
    raaaaaar  
       Oct 27, 2020 via Android
    IDE 自带的算么,感觉挺好用的。
    dany813
        40
    dany813  
       Oct 27, 2020
    自己定义模板
    threeEggs123
        41
    threeEggs123  
       Oct 27, 2020 via Android
    shuianfendi6
        42
    shuianfendi6  
       Oct 27, 2020
    tscfg
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1028 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 119ms · UTC 18:43 · PVG 02:43 · LAX 11:43 · JFK 14:43
    ♥ Do have faith in what you're doing.