V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xiaotianhu
V2EX  ›  程序员

还是用不来 copilot 写代码。

  •  
  •   xiaotianhu · 2023-05-06 14:49:26 +08:00 · 7071 次点击
    这是一个创建于 599 天前的主题,其中的信息可能已经有所发展或是发生改变。
    很多人安利 github copilot ,感觉是写代码的神器。

    为什么我用起来只感觉这玩意拖累我呢。

    你写一段开头,要想着怎么写一个开头让 AI 能更好的补全,注释要怎么去引导,像一个 prompt ;
    然后等着它弹出补全,再阅读一下;
    然后读者读着,你的思路就被它带走了,然后得想一下自己是想咋写的,再对比下它写的;
    如果发现它写的不对,可能要换个 prompt 的方式,或者都删了自己写。

    结果就是经常在这种循环里,感觉自己很分裂,思路更加支离破碎了。什么心流,flow ,不存在的,感觉完全在跟另一个人较劲,不停的 code review ,找毛病。

    而用 GPT 就不一样,任务是明确的,交互过程更主动可控,思路更加完整连贯,这才真真是代码好助手。
    44 条回复    2023-05-08 16:03:48 +08:00
    elechi
        1
    elechi  
       2023-05-06 15:31:01 +08:00   ❤️ 2
    就按照自己的思路写呗,弹出来啥有用就用,没用就过
    uni
        2
    uni  
       2023-05-06 15:39:34 +08:00
    我也用不惯,至今还在用 tabnine 的 popup 模式,就跟普通的补全类似但是更智能一点,这个好用
    wonderfulcxm
        3
    wonderfulcxm  
       2023-05-06 15:48:48 +08:00 via iPhone
    哈哈,我最早写程序的时候为了防干扰甚至还特意关掉 IDE 里的代码补全,主程看了觉得不可思议,估计他觉得这人是不是傻,后来习惯了觉得还是弊大于利,copilot 好像没什么影响,思路都是先想好再写,它只是一个更高级的代码补全。
    8355
        4
    8355  
       2023-05-06 16:05:44 +08:00
    如果你想让他生成更好的代码最好注释写英文 更准确 不准确是因为你的 prompt 还不够好

    目前方法名写的好 哪怕不写注释生成的代码都是 80+%基本可用只需要微调即可

    idea 包括数据库配置和数据结构添加良好的标准注释有利于后续代码的生成
    wxw752
        5
    wxw752  
       2023-05-06 16:09:05 +08:00
    我用的很爽呀 大部分代码只需要微调就可以了。
    pi1ot
        6
    pi1ot  
       2023-05-06 16:10:43 +08:00
    每次跳出来都是一次思路的打断,我也用不来。
    lyyQAQ
        7
    lyyQAQ  
       2023-05-06 16:12:33 +08:00
    同意楼上的,它最大的作用就是作为高级代码补全工具
    optional
        8
    optional  
       2023-05-06 16:14:21 +08:00
    同用不惯,除非写一个不太熟悉的语言项目
    Saitama
        9
    Saitama  
       2023-05-06 16:24:54 +08:00
    @wonderfulcxm 牛 b 。我见过的程序员都是面向 IDEA 编程。没代码提示直接不会写代码了。
    defage
        10
    defage  
       2023-05-06 16:31:45 +08:00   ❤️ 1
    你可以试试多写注释,这样等你后面再写其他代码时,可以先写注释,你会发现它已经能按照你以往的方式,按照你写的注释生成一整块代码了,甚至一整个 class 。

    比如 java 的时候,能很快帮你生成一整个枚举
    coldmonkeybit
        11
    coldmonkeybit  
       2023-05-06 16:33:58 +08:00
    同意 #4 ,而且我感觉自己代码的上下文越清晰,推导结果越准确。

    例如在实现一个全新的类(而不是修改一个已有的)的时候,这个时候你的逻辑一般是比较丝滑的,copilot 的提示就变得非常准确。
    nanvon
        12
    nanvon  
       2023-05-06 16:34:55 +08:00
    我个人(前端)用的还挺习惯,大概有 30% 的代码是生成的,我主要是生成一些重复性较高的代码(刚开始提示的效果很差,多写一会,提示的就很准确了)。或者写一行注释,生成较简单的代码。如果想要复杂一点的代码,就不靠谱了,就必须靠 ChatGPT 了。

    比如调几个增删改查的接口,先写好新增接口,换行写注释:// 修改接口 就会自动按照新增接口的模板来生成了
    hangbale
        13
    hangbale  
       2023-05-06 16:37:26 +08:00
    变量名,方法名尽量要语义化一点,看一眼就知道它是什么作用,这样 ai 的预测会更精准。
    我已经离不开这玩意了,vscode 里就留着这一个插件,其他无关的都已卸载
    JayZXu
        14
    JayZXu  
       2023-05-06 16:41:02 +08:00
    我觉得 copilot 在无注释情况下的补全不太好用,感觉很打乱思路
    所以我现在养成打注释的习惯
    在这个情况下补全可用性大大提高,只需要部分修改就能用。
    而且代码的可读性也大大增强
    otakustay
        15
    otakustay  
       2023-05-06 16:49:31 +08:00
    在 AI 时代,你不再是工具的绝对统治者和使用者,要慢慢的改变自己成为 AI 的陪伴者和协作者,转变身份习惯起来,重构自己的工作模式,让 AI 融入到自己的工作流里面来,等这一次痛苦的转变完成后,会发现生产力确确实实的有大幅度的提高
    otakustay
        16
    otakustay  
       2023-05-06 16:51:33 +08:00
    我现在知道什么时候 Copilot 大概率补得靠谱,什么时候不靠谱,知道什么时候等它一下什么时候不等直接敲代码,知道前面的代码写成什么形式能更让 Copilot 读懂并补出正确的,知道应该怎么加适当的注释帮助它生成比我注释多得多的代码提高效率
    纵使能找出 100 个理由说某个 AI 工具不好用,但它的存在又切实地让别人变得比你更高效了。自身的这种变化在未来是必须的,变不过来就只能原地踏步自我满足了
    ysicing
        17
    ysicing  
       2023-05-06 16:55:44 +08:00   ❤️ 1
    Copilot 对于我来说,最大的好处就是写英文注释了😂
    encro
        18
    encro  
       2023-05-06 17:23:19 +08:00
    我很习惯 copilot ,因为我一直都是注释优先代码,且注释解析 why ,代码(方法名)解析 how 。
    devilweime
        19
    devilweime  
       2023-05-06 17:32:23 +08:00
    重复性代码好用,其他的就能用就用
    Tanix2
        20
    Tanix2  
       2023-05-06 17:47:07 +08:00 via iPhone
    对于简单、重复的代码,Copilot 很擅长,我一般让它帮我自动补全这种东西
    CEBBCAT
        21
    CEBBCAT  
       2023-05-06 17:53:20 +08:00
    copilot 就是基于 GPT 吧,楼主描述的现象确实没错,我的建议是只用它来编写 30 行以内的逻辑,对我来说最频繁的使用场景是 if err != nil {log.Errorf()},以及一些 DAO.Get() 这样千篇一律的代码。

    如果需要写一个大一些的逻辑,比如带重试等等逻辑的,建议一两次尝试失败后自己分拆逻辑,然后一段一段地生成
    pkoukk
        22
    pkoukk  
       2023-05-06 18:45:41 +08:00   ❤️ 3
    好好写变量名,函数名,多写抽象类
    手动搭好骨架,剩下让他发挥
    THESDZ
        23
    THESDZ  
       2023-05-06 22:06:45 +08:00
    我写代码,一般先写接口 /抽象类 /方法名,命名也很规范

    而实现基本都交给 copilot
    我的体验是: copilot 非常的好用!
    fresco
        24
    fresco  
       2023-05-06 22:31:42 +08:00 via iPhone
    我主要是让它干一些苦活累活重复的活儿,又快又准确
    QKgf555H87Fp0cth
        25
    QKgf555H87Fp0cth  
       2023-05-06 23:01:38 +08:00
    同感,不过还是依赖它,有时候给我弹出我没用过的东西,然后 get 到了。
    TWorldIsNButThis
        26
    TWorldIsNButThis  
       2023-05-06 23:10:23 +08:00
    实践 typestate pattern 让它填充内部 mapping 逻辑的话还行
    debuggerx
        27
    debuggerx  
       2023-05-06 23:16:17 +08:00 via Android
    AI 写的代码太无聊了,缺乏美感,不够骚,所以我不用。
    huijiewei
        28
    huijiewei  
       2023-05-06 23:33:06 +08:00
    我用拼音命名 copilot 的确不好用。囧
    yyss8
        29
    yyss8  
       2023-05-06 23:58:51 +08:00 via iPhone
    我的基本只用来写英文注释
    偶尔能出些有用的代码 但是要先写注释 太麻烦了
    ns09005264
        30
    ns09005264  
       2023-05-07 00:33:34 +08:00
    我觉得生成的代码蛮符合我要求的,有时候还教我怎么写,对我来说还是很有用的。
    2kCS5c0b0ITXE5k2
        31
    2kCS5c0b0ITXE5k2  
       2023-05-07 03:12:11 +08:00
    用 copilot 要先写注释. 写好了在慢慢调整. 一些简单重复的很多很快就搞定了
    woshipanghu
        32
    woshipanghu  
       2023-05-07 09:37:15 +08:00
    逻辑尽量拆小一点
    我用的非常舒服 一些函数都不用再去查了
    ganbuliao
        33
    ganbuliao  
       2023-05-07 10:10:12 +08:00
    写重复性的代码太好用了吧
    适合 已经整理好了一个思路 然后 copilot 完善代码
    Rannnnnnn
        34
    Rannnnnnn  
       2023-05-07 12:15:07 +08:00
    顺其自然不就好了吗
    rrfeng
        35
    rrfeng  
       2023-05-07 14:04:48 +08:00 via Android
    提示出来一眼看过去跟自己预想的是不是差不多。差不多的话就用它然后修修。
    差的多或者看不懂的话就直接忽略。

    差不多的意思不止包括代码功能差不多,代码结构差不多也行…反正帮助少敲键盘也是一种帮助。
    chaogao2016
        36
    chaogao2016  
       2023-05-07 14:28:28 +08:00
    +1 ,重新性代码用它来解放双手
    awolf
        37
    awolf  
       2023-05-07 15:47:23 +08:00
    @otakustay 做 AI 的奴隶,哄着主子干活
    otakustay
        38
    otakustay  
       2023-05-07 15:53:21 +08:00
    @awolf # 平时不也做着各种语言编译器的奴隶,能有什么区别
    SmiteChow
        39
    SmiteChow  
       2023-05-08 09:44:05 +08:00
    用 AI 写代码的都是工作量不饱和
    wuchujie
        40
    wuchujie  
       2023-05-08 14:50:49 +08:00
    有人跟我一样用 nvim
    ```
    copilot
    windwp/nvim-autopairs
    wuchujie
        41
    wuchujie  
       2023-05-08 14:51:29 +08:00
    @wuchujie
    有人跟我一样用 nvim
    copilot
    windwp/nvim-autopairs

    括号和冒号老是补全出问题的吗
    xiaotianhu
        42
    xiaotianhu  
    OP
       2023-05-08 14:52:37 +08:00
    @huijiewei 哈哈 你赢了( AI 一败涂地
    xiaotianhu
        43
    xiaotianhu  
    OP
       2023-05-08 14:54:07 +08:00
    @wuchujie
    我就是 nvim 里用的啊,似乎没有这个问题呢。。。。我没用括号自动补全的插件。
    也可能是我用的不够多?改天忍痛再试试....
    wuchujie
        44
    wuchujie  
       2023-05-08 16:03:48 +08:00
    @xiaotianhu
    github 有个 issue
    https://github.com/orgs/community/discussions/46277
    想问一下有没有同样遇到这个问题的。。看怎么解决
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3010 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 13:56 · PVG 21:56 · LAX 05:56 · JFK 08:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.