日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 代码风格_Java代码风格:最终决定

發布時間:2023/12/3 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 代码风格_Java代码风格:最终决定 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java 代碼風格

所謂的最不起眼的事情如何引發爭議性的討論,有時甚至引起激烈的辯論,難道不是很有趣嗎? 例如,我目睹了幾次場合,如何使用關鍵字final引發了非常激烈的爭論。 對于外部觀察者來說,這看起來似乎是對邪惡或神圣的最終決定decision可危。

但是,必須公平地說,大多數可能的final用例都很難適應簡單的對或錯模式。 使用還是不使用的選擇取決于經常相互矛盾的意圖的個人強調。

在文學中尋求建議時,唯一的中途共識似乎是最終常數定義…

class Foo {public static final String CONSTANT = "constantValue"; }

…以及約書亞·布洛赫(Joshua Bloch)的第15項:最小化可變性1 ,他建議將不可變類的所有字段都定型為final并確保不能擴展該類(而后者不必通過final強制實現):

public final class Foo {private final int value;public Foo( int value) {this.value = value;}public int getValue() {return value;}[...] }

從那里意見分歧。 小羅伯特·西蒙斯 在他的《 Hardcore Java 2》一書中,整整一章都專門介紹了final關鍵字,他在結尾給出了強烈的建議,即“將final遍及整個代碼”。 這個寫得很好的章節包含許多關于通過聲明變量,參數,方法或類final將邏輯錯誤轉換為編譯時錯誤的優點的見解。

另一方面,羅伯特·C·馬丁(Robert C. Martin)明確不同意以下陳述:“有一些對final良好用法,例如偶爾的final常量,但否則關鍵字幾乎沒有增加任何價值并造成很多混亂” 3 。 他繼續說, final可能會遇到的錯誤類型通常會在他的單元測試中涵蓋。

雖然我傾向于同意馬丁,但我不會說席夢思通常是錯的。 過去,我實際上經常自己使用final關鍵字,以避免編程錯誤或濫用。 但是,改變主意的一個原因可能是幾年前我轉向了TDD方法。

這樣一來,除了Martin的論點,我注意到,如果將協作者類或其某些方法聲明為final ,則通過協作者模擬實現測試隔離將變得更加棘手。 由于很難將測試視為濫用 ,這使我想到了此類聲明可能暗示的深遠影響。 我意識到,很難預見到將沒有有效的用例,這將證明擴展和覆蓋是合理的。

相反,面對final方法或類,人們有時會頗具創造力,以某種方式規避了限制,這使事情可能比例如類擴展本來就糟。 因此,如今,我通常避免在類和方法聲明上使用關鍵字,而將自己局限于文檔中不希望出現的子類注釋或類似內容。

在本文結束之前,我想就上述混亂的話題分享最后的想法。 為此,請查看以下代碼,該代碼依賴final來確定方法范圍的變量和參數:

public void doit( final String message ) {final int value = calculate();final Item item = create( value, message );executorService.submit( new Runnable() {public void run() {handle( item );}} );}

盡管代碼沒有多大用處,并且可以按不同的方式排列,但是對于最近偶然遇到的final 代碼 ,它反映了某種真正的編碼風格 。 盡管這種樣式可以防止在發生意外時重新分配局部變量,但它也掩蓋了一個事實,即final聲明實際上是強制性的。 這是因為在匿名Runnable實現中使用了變量item 。 下一個代碼段擺脫了不必要的聲明以強調不同之處:

public void doit( String message ) {int value = calculate();final Item item = create( value, message );executorService.submit( new Runnable() {public void run() {handle( item );}} );}

權衡利弊我更喜歡最后一個變體,但我假設根據您個人的觀點,IDE的功能是在發出警告時退出本地重新協助,團隊的編碼約定以及,而且,而且,您可能有充分的理由選擇第一種或第二種樣式,甚至更傾向于選擇兩者的混合。

這使我得出最終結論,即爭議將繼續!

  • 有效的Java(第二版),第4章–類和接口,Joshua Bloch,2008年, ?
  • 頑固的Java,第2章-最后的故事,小羅伯特·西蒙斯,2004年, ?
  • 干凈的代碼,第16章,重構SerialDate,羅伯特·C·馬丁,2009年?
  • 翻譯自: https://www.javacodegeeks.com/2014/04/java-code-style-the-final-decision.html

    java 代碼風格

    總結

    以上是生活随笔為你收集整理的java 代码风格_Java代码风格:最终决定的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。