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

一个好的 curd 代码生成器,应该长什么样

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

    用来 curd 的代码生成器有很多,我觉得有以下问题比较难解决:

    1. 很多业务逻辑需要在 curd 之外做一点修改,比如加一个参数校验,在完成后做一些后置操作,或者满足某种条件才可以进行,甚至于多表事务。很难预留出灵活的插口。

    2. 如果进行了一定程度的修改,再跑一次会覆盖掉修改的代码。其实我想表达的意思是这些修改后的代码往往就不再具备创建时的结构性的,不利于后续的拓展。

    你们有接触过比较好的工具吗,或者一些 web 框架自带 /第三方生成器也可以作为参考。

    30 条回复    2020-03-11 16:12:55 +08:00
    maichael
        1
    maichael   117 天前
    人肉生成器
    vevlins
        2
    vevlins   117 天前
    @maichael 只需要圈养几个码农,成本偏低😂
    zhaorunze
        3
    zhaorunze   117 天前   ❤️ 1
    封装,借助 mybatis-plus,单表增删改查文件不需要新建,sql 语句不需要自己写
    lhx2008
        4
    lhx2008   117 天前
    业务逻辑也能生成?如果楼主说的是 mybatis 那种,用个真正的 ORM 框架就可以了
    aaaafei
        5
    aaaafei   117 天前
    一个鼻子,两个眼睛,一张嘴,两只手,大概像个人样
    vevlins
        6
    vevlins   117 天前
    作为一个兼职做管理端后台的前端,没学过 java,现在都是用 go,看来从生态上 go 落后 java 好几个年代
    967182
        7
    967182   117 天前
    能不能生成五彩斑斓的黑啊?不能就不算好 [狗头]
    ggicci
        8
    ggicci   117 天前
    让产品经理写接口文档,然后从接口文档生成代码。
    codeloster
        9
    codeloster   117 天前
    小爱同学,生成注册表单,详情参考某某网站
    baobao1270
        10
    baobao1270   117 天前
    class BaseController{
    function Create(args){ Model.Create(args) }
    function Update(args){ Model.Update(args) }
    function Read(args){ Model.Read(args) }
    function Delete(args){ Model.Delete(args) }
    }

    (开个玩笑,别当真)
    chaoxuelei
        11
    chaoxuelei   117 天前
    为什么要生成代码,直接生成接口不是很好么~~~~~taiwutech.com
    guxingke
        12
    guxingke   117 天前
    生成的代码需要有扩展点 , 提供默认的扩展实现, 但是允许开发者扩展.

    func dosomething(args) {
    // pre hook
    doSomethingHook.preHook(args)

    {
    generate biz code.
    }

    // post hook
    doSomethingHook.postHook(args)
    }
    zjsxwc
        13
    zjsxwc   117 天前
    参考各种语言的 web admin 框架
    ericls
        14
    ericls   117 天前 via iPhone
    应该不生成代码。生成代码 你维护吗? 就算别人改了你也能维护吗?
    nl101531
        15
    nl101531   117 天前
    我来帮你写个 JB 插件吧。。。话说有的话,你愿意付费吗?
    lululau
        16
    lululau   117 天前
    Rails ActiveRecord 这样的吧
    vevlins
        17
    vevlins   117 天前
    @nl101531 不愿意,本来就是想通过写一个或者研究一个提升自己的能力,花钱买来干啥
    liukangxu
        18
    liukangxu   117 天前
    Bond -> Logic -> Service

    在 Bond 中用注释控制是否生成对应 CURD Logic 和 Service
    lidashuang
        19
    lidashuang   117 天前
    rails
    passerbytiny
        20
    passerbytiny   117 天前
    curd 生成器无所谓好坏,因为它总是坏的,原因你自己都分析出来了。

    curd 生成器并不是 Java 的亮点,而是污点,不要羡慕。
    jzmws
        21
    jzmws   117 天前
    这个没有好坏的, 只有改到适合自己的 . 这个拿来主义是不现实的!
    DelayNoMay
        22
    DelayNoMay   117 天前
    未来人工智能写代码,靠你了
    dany813
        23
    dany813   117 天前
    确实没特别好用的
    hnbcinfo
        24
    hnbcinfo   117 天前
    C#开发语言的话,可以使用 T4 模板。
    myidea
        25
    myidea   117 天前
    试一下 [diboot devtools]( https://github.com/dibo-software/diboot-v2) 吧,基础代码可以灵活扩展,生成代码不会覆盖你的自定义代码。
    msg7086
        26
    msg7086   116 天前
    遇事不决看看 Rails。
    wuhhhh
        27
    wuhhhh   116 天前
    Michaelssss
        28
    Michaelssss   116 天前 via Android
    6000 一个月,六线城市找个码农
    bnm965321
        29
    bnm965321   116 天前
    Django Rest Framework

    OO 编程教科书
    purensong
        30
    purensong   116 天前
    作为一个 java 开发,说下自己的体会。
    我一般习惯用 mybatis-generator 插件生成 dao,官方的确实需要修改才能满足需求,我一般统一改成 crud 的样子是三个方法
    selective(Object o); save(Object o); delete(Object o);
    在写 SQL 的时候,把全部参数的判断都加上,不为空就加上,在使用的时候都是对象传入。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1491 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:19 · PVG 01:19 · LAX 10:19 · JFK 13:19
    ♥ Do have faith in what you're doing.