V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Hanggi
V2EX  ›  程序员

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

  •  
  •   Hanggi · 331 天前 · 4476 次点击
    这是一个创建于 331 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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