最近,我要求ChatGPT改进我几年前写的一个JavaScript方法。它的回答让我感到惊喜,但也有一些教训。
事情是这样的--它分析了代码,编制了一个它想做的修改列表,然后把所有的修改一起给了我最后的输出。很疯狂,对吗?
原始请求
响应
这很了不起。它似乎理解了我的语法,从Stack Overflow上众包了每一个响应(并删除了一些嘲讽),并改进了我的代码。
这里有一些经验教训...
ChatGPT可能会对重词(包括其他东西)感到挣扎,所以不要急于替换你的代码
我要求它改进一个使用regex来格式化标题的方法。我已经为这个方法写了很多单元测试,并得到了我所期望的输出,所以我用ChatGPT的方法替换了我的方法,并运行了单元测试。
他们失败了。
这里有很多因素在起作用,有很多原因可能导致失败,所以我不会去猜测原因。然而,这里的教训是,你不能盲目地相信ChatGPT并开始替换大量的代码。这不会有好结果。
ChatGPT可以为你写单元测试
我不知道有哪个开发者会对单元测试感到兴奋。当他们抓到一个错误或全部通过时,我们会很兴奋,但编写它们是很乏味的。进入ChatGPT。我给它输入了一个JavaScript方法,然后说,"给我写单元测试"。几秒钟内,它就吐出了快乐的路径方案、空值检查和未定义检查--有正确的命名规则。以 "自动魔法 "的方式编写单元测试已经很了不起了,但它根据我的方法名称来命名变量的事实,更是锦上添花。
我不认为我可以夸大这真的是多么不可思议。我和我的开发人员写单元测试的时间远远超过我想与企业分享的时间。它是增值的,但它需要很长的时间。如果我们能用ChatGPT来处理大部分的单元测试,并为更复杂的情况节省精力--那将改变游戏规则。
ChatGPT是一个神奇的代码审查员
我对代码审查有一种爱恨交加的关系。他们是那种有趣的挑战(当他们没有改变600个文件时),但他们也可能是劳动密集型的。当我审查代码时,我主要看的是我如何能破坏代码,以及当代码不可避免地被破坏时,要找出出错的地方有多容易。我并不关心你是否使用了三元运算符或箭头函数;提示可以处理这个问题。
ChatGPT可以填补这个空白。
当我要求ChatGPT改进代码时,它确实这样做了,但它这样做是有原因的。这一点非常关键。根据团队的构成,大多数的代码审查都是由高级开发人员审查初级开发人员的代码。一个好的工程师会解释为什么要做修改,这样被审查的人就可以学习并变得更好。如果有一个工具,工程师可以在把它放在另一个工程师面前之前,获得即时的反馈和辅导,这将节省每个人的时间。如果OpenAI能够通过允许ChatGPT访问专有代码来解决数据安全问题,我们就会有生意。
综上所述,利用ChatGPT这个工具可以大大改善开发者的生活。这些是一个抽样的想法,我相信还有很多人已经尝试过这些以及数以百计的其他实验。谢谢你的阅读。