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



作为程序员,不知道你有没有想像过,若是某天,再也不须要面向Google、Stackoverflow编程,再也不须要Ctrl + C 和 Ctrl + V,你在IDE里敲出某个编程语言的关键词时,像导航同样,下一步的代码就已经展示出来;
javascript

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

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


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

这样的状况你有没有想过?数据库


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


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


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

梦想仍是要有的,万一实现了呢?微信


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

进入视线的就是它 Codota:

1. 安装

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

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

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


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

2. 使用

官方功能介绍的视频里,是以JDBC为例,


除了这种API的调用提示外,还有经常使用代码片断自动生成,要不人家口号也不敢喊那么响。

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

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

 
  
try (FileInputStream fis = new FileInputStream(srcFile); FileOutputStream fos = new FileOutputStream(dstFile)) { int len; byte[] buffer = new byte[4096]; while ((len = fis.read(buffer)) > 0) { fos.write(buffer, 0, len); } } catch (IOException e) { // ... handle IO exception }


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

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

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

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


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

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



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

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


3. 查看更多

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

好办!

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


右侧的显示




4. 再多

若是还不够,点击这个连接,在浏览器里一次看个痛快吧。




相关阅读

Sentinel 是怎样拦截异常流量的?

不用Jar 包的Agent?几行代码实现运行时加强?

MySQL: 喂,别走,听我解释一下好吗?

多表查询用什么联接?别信感受,用数听说话

一个数据库SQL查询的数次轮回

数据库是咋工做的?(一)

凭什么让日志先写?

Java七武器系列长生剑 -- Java虚拟机的显微镜 Serviceability Agent

Java七武器系列霸王枪 -- 线程状态分析 jstack

Java七武器系列孔雀翎-- 问题诊断神器BTrace

嵌套事务、挂起事务,Spring 是怎样给事务又实现传播特性的?

怎样阅读源代码?





源码|实战|成长|职场


这里是「Tomcat那些事儿

请留下你的足迹

咱们一块儿「终身成长」

本文分享自微信公众号 - Tomcat那些事儿(tomcat0000)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索