作爲程序員,不知道你有沒有想像過,若是某天,再也不須要面向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. 再多
若是還不夠,點擊這個連接,在瀏覽器裏一次看個痛快吧。
相關閱讀
Java七武器系列長生劍 -- Java虛擬機的顯微鏡 Serviceability Agent
嵌套事務、掛起事務,Spring 是怎樣給事務又實現傳播特性的?
源碼|實戰|成長|職場
這裏是「Tomcat那些事兒」
請留下你的足跡
咱們一塊兒「終身成長」

本文分享自微信公衆號 - Tomcat那些事兒(tomcat0000)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。