寫代碼效率不高?放過 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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索