今天我们就来体验一下这个自动写代码的插件啊,叫Copilot,形容说这个插件就像你的副驾驶一样,是你写代码的好帮手,可以帮你自动生成代码之类的。这个插件并没有真正的完全公开啊,现在她也属于一个测试的阶段,就如果你想使用这个插件的话,你还必须要去申请一下。然后这个插件呢,就是帮你敲代码的一个智能助手吧,你这边写了一个注释,然后写了一个函数名称,写了一个函数的定义,它就给你补全了这些代码,就给人一种好像很厉害的样子。这都是他给的一个演示啊,比如说你要计算什么两个日期之间的相差天数,然后你只需要敲这样一个函数名称,它就能自动给你补全出这两个天数的计算逻辑。第二个功能呢,就是说它能够把你的注释转换成代码,就比如说你输入了这样一段住是吧,然后呢,这个AI就自动给你生成了这些分。
的代码。第三个呢,帮助你自动补全可重复的代码,然后我们只写了javascript还有python的注释的语法,然后它就自动给我们补全了其他语言。再往下看,就是这个插件呢,能够根据你写的这个函数,然后自动帮助你补充这个测试的用例,很多时候我感觉写测试还是很费时间的。就当我们在本地写代码的时候,已经基于开源代码仓库训练好的模型会为我们提供代码的生成服务,就相当于我们本来要百度的时候,是直接自己去百度,我们要搜的代码就是这个代码仓库搜,但现在呢,有了这个服务之后,我们不用自己搜了。我其实也比较期待啊,你说他能够自动帮你生成代码,那他未来会不会出一个功能,就是说当你遇到报错的时候,能够自动帮你修复这个报错。首先呢,我们进到这样一个开发工具,我这里用的是jetbrains。
然后我们这里搜一下,搜一下那个CopilotOK,就能够搜到这样一个插件了。呃,现在我们安装好之后就开启了这样一个插件了,这里有一个小的工具栏,然后呢,我们看一下我们基于这个文档网站里的文件,能让他给我们提示出什么代码。我现在就直接敲回车,他这就给了我一行提示,让我去装这个willprice的一个什么容器的插件,按一下alt,再加上左括号或者右括号,可以切换它的这个推荐,假如你王乐这个依赖他的全名叫什么,是不是可以帮你补全啊?我举个例子,假如说我要装一个will的截图插件,看看能不能给推荐出来,诶,打卡这个。是不是推荐出来了,而且他右边就是能够告诉你这个插件到底是做什么的,大家平时有没有那种经常写的工具类函数,比如说校验身份证,按下回车。
哦,它就自动给你生成的这些代码,然后你按一下tab啊,这就出来了,我们再来个校验手机号,校验手机号按下回车。好,打赏给你生成了一串逻辑,呃,校验邮箱,哎,我还没打校验邮箱呢,这个校验校验邮箱不是我打的,我按一下tab接受提示,按下回车。好,他又出来了,我甚至都没有写注释,他都能把这个注释给我给推出来。看一下能不能生成一个页面打卡我啥都没写,他给我推荐一个helloword第一行代码,能不能把我自己写的代码给我推荐出来呢?不知道我的代码库在不在他的这个AI模型训练里啊。呃,他倒是生成的东西,但是生成的东西不怎么对啊。呃,那我们写一个什么呢?我们写一个导航栏的ID等于内务,看他给我们提示什么东西嘛,给我们提示出来了一些可能容易放到导航栏上的东西吧,然后再让他提示。
就这没有了,它能够帮助你去做acm题的话,这会不会非常的恐怖啊,我在想同学说二叉树是吧,二叉树一个经典的数据结构了,好他这里给你提示出来了一个二叉树的节点,好像也就这样了,找一道经典的面试题,爬楼梯一道经典的面试题啊,看一下能不能生成诶。真的上场啦,这个太经典了是吧,才想到一个很好玩的东西啊,我们去找一套现成的题号试试啊,最长回文子串这个题号是什么?题号是第五题是吧?那我出一个X5,给他一点难度啊。来跑一下试试啊,这要是能过了,还是有点厉害的,提交对吗?不对,你要是在工作中用这个东西就坑了,因为他也不知道你的这。
代码到底是对的还是错的,几百万的程序员,我们一起来随便写一个垃圾代码,这个插件就受影响了,对吧?这也是一种攻击,属于社会工程这东西。如果我们拿它来写一些经典函数,或者说模板函数,无论是谁写基本都一样的那种代码,我觉得应该会很靠谱。我们试一下单例模式,单例模式敲一下回车,好大厂这里推荐了一一行代码,首先定义一个单例,敲一下tab再回车。呃,哎,他这里还用了一个双检索,还是单例模式里面比较优秀的实现啊。但是呢,他是单例模式还是有点问题的。哎,我操,等会儿不是这有点恐怖吧,我靠,这有点恐怖吧,这这这这什么情况,怎么连我18岁他都知道,OK啊,我估计他这个代码是从哪儿来的。
应该是从现在咱们这个项目的上下文里面提取来的啊,我们再生成一个和上下文根本就没什么关系的代码,所以是分布式锁。哎,怎么给我推荐这些东西啊,假如用redisan的框架来做分布式锁呢?是不是因为我没有引入Robinson这只酷啊,我感觉雪花雪花算法。试一下,现在它生成的还都是一些调用的函数,而不是逻辑的函数啊,就不是雪花算法实现本身就感觉不是特别好啊。难度就更大了,张张还在写着通用的,固定板式的,现在我们写一个业务逻辑了,比如说写一个图书管理,图书管理系统能给我生成主界面,查看所有图书,添加图书。哎,他这把咱们系统给设计出来了。
不是自动生成代码,自动生成注释。呃,这里我们写个方法好吧,Public看一下会给我们提示吗?大家看一下他给我们推荐的是什么?我感觉可能还是和上下文有关吧,就咱们现在这个项目的上下文太少了,他根本不知道要给我们推荐什么样的代码。对,那我们现在去和自己的业务逻辑相撞啊,我们模拟一下我们真实工作的场景。大家看我之前是带大家做了一个用户管理的系统,然后现在我做了几个功能,一个是用户注册,一个是用户登录,那现在呢,我缺一个注销,对不对?放一个用户,诶,打卡,我敲用户的时候,他给我提示说爱一个用户,当初桥下泰伯这里给我补全了一个Y的userlogout,其实如果让我自己写的话,我估计我传的参数也是这个,而且它的这个命名规范,大家看我们上面用户登录叫userlogin,当初教userlogout,然后呢,我们就实现一下用户。
当初。敲一下。有点厉害啊。唉,这里又要生成代码了,他这是给我们生成了什么deleteuserupdateusergetuserbyIDgetuserbyaccount,各种各样的获取用户信息的方式,查询之类的,但是他代码还没生成醛,发现没有,还没生成醛,感觉还是挺唬人的吧。你可以直接写SQL来生成方法,我试一下,比如说我写一个selectusernamefromuser,写一个这样的注释,然后威尔ID等于问号敲一下回车奥大厦,他给你生成一些注释啊,但是它的这个生成的注释呢,好像和我们的用的这个框架是不太一致的。我们试一下它生成测试类好不好用啊比如说我们之前有一个方法叫用户登录是吧,我们现在测试一下用户登录,看他能不能给我们生成。
我们写一下这个方法,哎,它这个方法名推荐错了,我们再试一次,再给他一次机会啊,他给了很多种提示,那我们随便找一个看看啊用一下这个,嗯不太对吧,我们这个方法明明有三个参数,对吧,他只给我们生成了两个参数,还是有问题的,我感觉他好像更多的是从以前的代码仓库中提取出来的代码,但是呢,他好像忽略了对这个项目本身的一些考虑,对不对。你用这个插件有个前提,就是你必须要对这个逻辑非常的熟悉啊,有对这个逻辑对它生成的这个代码有掌控力的,否则的话,你根本就不知道它生成代码对不对,你不能随便用啊,我感觉写业务逻辑上用处不大,所以我觉得如果让我来用它的话,更多的是工具类什么日期转换啊,然后另外一个呢,就是说一个安全性的问题啊,我们还没有。
这个证据说这个AI插件他会不会说读取你本地的代码信息啊,就为了安全性,我是不敢在公司里面用的,大家也不要对它产生依赖性吧,当玩具还是不错的,我觉得比较理想的状态应该是人和AI互相辅助,咱们大家应该真的提升一下自己的算法,提升一下自己的一些系统设计的能力吧,不要把自己局限于每天只写这些重复的CAD,我觉得这样就够了,我反正还是挺期待他的啊,我觉得如果未来他能推荐的再精准一点,能更加结合本地项目的话。