写代码效率不高?放过Ctrl C 和 V,让AI来帮你写代码吧

人工智能
做为程序员,不知道你有没有想像过,如果某天,不再需要面向Google、Stackoverflow编程,不再需要Ctrl + C 和 Ctrl + V,你在IDE里敲出某个编程语言的关键词时,像导航一样,下一步的代码就已经展现出来;

[[355638]]

做为程序员,不知道你有没有想像过,如果某天,不再需要面向Google、Stackoverflow编程,不再需要Ctrl + C 和 Ctrl + V,你在IDE里敲出某个编程语言的关键词时,像导航一样,下一步的代码就已经展现出来。

做为程序员,不知道你有没有想像过,如果某天,简单说几句话,或者简短写几句,就能够实现你的需求,完成代码开发。谈笑间,bug 灰飞烟灭。一切尽在弹指一挥间。

做为程序员,不知道你有没有想像过,如果某天,写程序也能有个智能的助手,像出行、购物一样,告诉你哪个API调用的人更多,他们是怎么用的。

那样就会空出大量的时间,去做代码之外,其它你想做的事情。当然,你也可以接更多的需求,写更多的代码嘛 :-)

这样的情况你有没有想过?

关于程序员,有个调侃的笑话,大意是这样的:

一个程序员,技术水平一般,经常写代码到很晚,bug 还多。他的女朋友很是心疼。后来一段时间,这哥们发现,前一天晚上遗留bug的代码,第二天在公司运行一切正常。太惊讶了。某天半夜醒来忽然发现,他女朋友在电脑上帮他改bug...

看到能写代码改bug的女朋友,是不是让前面的想法更强烈了?

梦想还是要有的,万一实现了呢?

这不,说着说着它就来了。迎面走来的就是我们今天要说的「写代码小助手」,「AI代码小能手」,无所谓怎么称呼了,你开心叫它大黄也行。

进入视线的就是它 Codota:

1. 安装

在IDEA的插件列表里搜索一下,你一定会注意到开头介绍里的那句「AI code completions」。

当然,在其它的IDE里也大概类似,毕竟人家的口号是「AI Code Autocomplete for All Languages and IDEs」,划重点,所有的语言和IDE。

具体有什么本领,就让它来让两步,出来溜溜吧。

插件安装之后,在编写代码时的提示列表里会多出来许多浅绿色的,这是 Codota的内容。

2. 使用

官方功能介绍的视频里,是以JDBC为例,除了这种API的调用提示外,还有常用代码片段自动生成,要不人家口号也不敢喊那么响。

比如你在IDE里刚写了个 File ,他会询问你想干啥。

比如常用的文件拷贝、内容压缩等等。如果选择了copyFile这个,下面的这一段代码就生成好了。

  1. try (FileInputStream fis = new FileInputStream(srcFile); 
  2.            FileOutputStream fos = new FileOutputStream(dstFile)) { 
  3.             int len; 
  4.             byte[] buffer = new byte[4096]; 
  5.             while ((len = fis.read(buffer)) > 0) { 
  6.                 fos.write(buffer, 0, len); 
  7.             } 
  8.         } catch (IOException e) { 
  9.             // ... handle IO exception 
  10.         } 

这下知道为啥人家口号喊的响的原因了吧。

另外,你有没有注意到,在提示的列表里,FileOutputStream 和 FileWriter 这两项后面的数字。这也是除了自动补全之外称为AI的能力,毕竟还大数据分析了嘛。

特别是对于多个外部项目依赖时,如果重名了,该用哪个,大数据告诉你,更多人的选择是谁。

比如要通过Http请求个资源,除了要用Get/Post,构造Entity,拼接URL,还要干啥来着,摸了一把日渐稀少的头发,写下了HttpClient,一回头,IDE里早提示了:

那就Post吧,随着下方向键和一声Enter的大力敲击,这段代码就出现了:

  1. try { 
  2.             HttpPost httpPost = new HttpPost("https://example.com"); 
  3.             httpPost.setEntity(new StringEntity("{\"key\": \"value\"}", ContentType.APPLICATION_JSON)); 
  4.             String responseBody = httpClient.execute(httpPost, httpResponse -> { 
  5.                 int status = httpResponse.getStatusLine().getStatusCode(); 
  6.                 if (status < 200 || status >= 300) { 
  7.                     // ... handle unsuccessful request 
  8.                 } 
  9.                 HttpEntity entity = httpResponse.getEntity(); 
  10.                 return entity != null ? EntityUtils.toString(entity) : null
  11.             }); 
  12.             // ... do something with response            
  13.         } catch (IOException e) { 
  14.             // ... handle IO exception 
  15.         } 

我想为了提升代码的开发效率,许多人曾经会记录一些常用的代码片段,一般称之为代码的Snippet,一些编辑器里也有这种管理小工具。

这一下子,连 Snippet 也省了,还少了Ctrl C +V 的过程。

3. 查看更多

如果提示列表里没有感兴趣的,还想看更多的示例怎么办?

好办!

在某个关键词右击对应的类名,在弹出的菜单里选择【Get relevant examples】,会在IDE的右侧看到更多关于该类的使用Demo。

右侧的显示

4. 再多

如果还不够,点击这个链接,在浏览器里一次看个痛快吧。

本文转载自微信公众号「 Tomcat那些事儿」,可以通过以下二维码关注。转载本文请联系 Tomcat那些事儿公众号。

责任编辑:武晓燕 来源: Tomcat那些事儿
相关推荐

2022-08-02 08:11:41

监控埋点埋点方式插桩

2022-12-12 12:04:59

ChatGPT代码软件

2013-01-22 13:50:11

程序员前端Web

2015-09-28 09:05:27

别人能读懂代码

2015-09-28 09:17:43

代码可阅读代码质量

2023-01-04 07:33:34

机器代码人工智能

2020-02-19 13:11:52

阿里 AI 代码

2024-01-19 16:43:01

2020-04-03 14:55:39

Python 代码编程

2012-07-03 09:59:03

程序员

2017-09-08 12:15:54

Python代码Pythonic

2020-09-30 16:15:46

ThreadLocal

2021-03-28 16:55:11

Python工具链代码

2019-02-26 15:34:27

AI 数据人工智能

2011-02-23 08:50:22

C#.NETdynamic

2016-12-09 15:02:02

云计算

2023-12-24 12:44:47

SpringBoot代码接口开发

2014-12-22 09:54:52

代码

2015-07-17 10:02:48

写代码

2014-02-28 13:46:35

Angular代码
点赞
收藏

51CTO技术栈公众号