寫代碼效率不高?放過Ctrl C 和 V,讓AI來幫你寫代碼吧
做為程序員,不知道你有沒有想像過,如果某天,不再需要面向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這個,下面的這一段代碼就生成好了。
- 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. 再多
如果還不夠,點擊這個鏈接,在瀏覽器里一次看個痛快吧。
本文轉載自微信公眾號「 Tomcat那些事兒」,可以通過以下二維碼關注。轉載本文請聯系 Tomcat那些事兒公眾號。