9

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

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzI3MTEwODc5Ng%3D%3D&%3Bmid=2650861786&%3Bidx=1&%3Bsn=0f0298bbfa339f068551e3d874563866
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

rY7Rr2e.png!mobile

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

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

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

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

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

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

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

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

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

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

进入视线的就是它 Codota:

1. 安装

ZzArumI.png!mobile

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

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

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

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

2. 使用

FjAVBnV.png!mobile

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

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

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

6zAZjuE.png!mobile

比如常用的文件拷贝、内容压缩等等。如果选择了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里早提示了

f6JVvey.png!mobile

那就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。

2yieYze.png!mobile

右侧的显示

yMziamn.png!mobile

4. 再多

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

yuyQBz2.png!mobile

相关阅读

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

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

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

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

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

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

凭什么让日志先写?

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

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

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

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

怎样阅读源代码?

VzIjauI.jpg!mobile

源码|实战|成长|职场

这里是「 Tomcat那些事儿

请留下你的足迹

我们一起「终身成长」

y6n6Bzn.jpg!mobile

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK