Java社区调查结果:74%的开发人员希望减少详细程度
一個新的JDK增強建議(JEP)在Java社區中風起云涌:JEP286。該建議建議在Java的未來版本中引入局部變量類型推斷,以簡化Java應用程序的編寫。
在下面的文章中,我們將解釋它的含義以及它將如何影響您的代碼。
新帖:Java社區調查結果:74%的開發人員希望減少詳細程度https://t.co/TtxVBiqFAj pic.twitter.com/TEs0VtFnpD
— Takipi(@takipid) 2016年4月13日
提案
新的語言功能建議在Java中添加一些語法糖—簡化它并改善開發人員的體驗。 新語法將減少與編寫Java相關的儀式,同時保持對靜態類型安全性的承諾。
換句話說,您無需指定關聯的類型就可以聲明變量。 Oracle聲明該新功能將允許例如以下聲明:
var list = new ArrayList<String>(); val stream = getStream();那將替換當前的語法:
List<String> list = new ArrayList<String>(); final Stream<String> stream = getStream();如您所見,Local Variable Type Inference將允許使用var關鍵字,而不是指定變量的類型。
眾所周知,Java有點冗長,在閱讀和理解您或另一個開發人員在編寫函數時所想到的內容時,這非常有用。 對于那些一直認為這有點乏味的人來說,該提案標志著重大的改變。
該建議與Java 9無關,Java 9已經在制定中,并且還將改變您的編碼方式 。
去JEP還是不去JEP?
幾周前,Oracle Java語言架構師Brian Goetz 發布了這項新建議的調查結果 。 主要問題是:“您總體上對擬議的局部變量類型推斷功能有何看法?”。 2,453個開發人員回答,結果我們基本上是肯定的:
您如何看待建議的局部變量類型推斷功能?
該調查的第二部分著眼于未來的語法,根據其他語言(例如C#,Scala,Swift,C ++或使用let)的類似用法,建議了5種選擇。 大多數用戶選擇var / val選項:
可能的語法選項
即使大多數用戶認可此新選項,但閱讀注釋部分仍會顯示開發人員贊成此更改,要求Oracle“與時俱進”,指出此更改應僅適用于val,甚至要求更多更改,例如作為多行字符串。
我的生日只有幾個星期,但這是有史以來最好的禮物之一! https://t.co/QVtXwUPwEG
原聲帶: https : //t.co/dIpLKLFFEE
— Erik Meijer(@headinthebox) 2016年3月10日
反對該建議的開發人員聲稱,對于那些剛開始使用Java的人來說可能會很困難,或者指出現有語法是“冗長和易讀性的正確組合”,而“ diamond運算符是一個不錯的選擇。行動”,與目前的提案不同。
不要責怪語言功能使開發人員編寫糟糕的代碼。 責怪卑鄙的開發者! JEP286是Java #var #val的“偉大”東西
— Simon Maple(@sjmaple) 2016年3月13日
這種變化來自何處?
關于Java的最常見的抱怨之一是編寫Java所需的樣板代碼數量。 可以用其他語言(如C ++,C#,Scala和Go)用一行代碼編寫幾行Java代碼。
盡管類型推斷不是Java中的新概念,但它是局部變量的新概念。
它是在Java 7中(作為Project Coin的一部分)通過菱形運算符(<>)引入的,該運算符允許在不使用類型綁定ArrayList <>的情況下初始化列表,而在Java 8中使用Lambda Formals進行引入。 例如,使用菱形運算符可以編寫以下代碼:
List<String> list = new LinkedList<String>();當然, 在JEP 286摘要頁面上,您可以從Oracle找到以下添加新功能的理由:
“ Java幾乎是唯一不包含局部變量類型推斷的流行的靜態類型語言。 在這一點上,這不再是一個有爭議的功能”
這將如何影響您的代碼?
Oracle知道社區可能需要一些時間來適應和接受這一新建議。 雖然尚不清楚JEP 286是否以及何時在將來的Java版本中成為現實,但這足以使社區中的一些開發人員大聲疾呼。
如果您是這些開發人員之一,那么您將很高興得知此處理方法僅限于:
- 帶有初始化器的局部變量
- 增強的for循環中的索引
- 在傳統的for循環中聲明的本地人
Oracle 聲明它將不適用于:
- 方法參數
- 構造函數參數
- 方法返回類型
- 領域
- 捕獲形式(或任何其他類型的變量聲明)
由于Java承諾支持Java的早期版本,因此我們可以假定它不會破壞向后兼容性。
在家嘗試一下
Takipi的我們總是喜歡在新產品上市之前嘗試它們,而JEP 286正是這樣。 如果您對JEP 286沒意見,可以立即自己檢查一下。
作為采用OpenJDK計劃的一部分,Richard Warburton和Raoul-Gabriel Urma公開發布了具有JEP 286支持的Open JDK的非正式版本 。 這樣,您就可以嘗試這些新功能,了解JEP 286的全部內容,并在實際操作中體會到它。
想嘗試#Java的類型推斷嗎? @raoulUK和我為JEP 286設置了二進制文件,因此您可以嘗試使用https://t.co/0YqnoguqTe
—理查德·沃伯頓(RichardWarburto) 2016年3月13日
最后的想法
這項新提議正在Java社區中引起轟動,引起了很多關注。 您現在可以測試新功能的事實將幫助開發人員認識到Java的未來可能掌握的東西。
重要的是要記住,這是一個較早的建議,目前還不清楚Oracle是否會實施它。 因此,我們鼓勵您參與將來的調查,并積極參與本JEP和其他將來與Java相關的功能。
翻譯自: https://www.javacodegeeks.com/2016/04/java-community-survey-results-74-developers-want-less-verbosity.html
總結
以上是生活随笔為你收集整理的Java社区调查结果:74%的开发人员希望减少详细程度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: y81s刷机包(Vivo Y81s刷机)
- 下一篇: 电脑增加旧机械硬盘(电脑增加旧机械硬盘怎