Effective Java 筆記(九)

來源:互聯網
上載者:User

相關讀書筆記列表

NO.27 返回零長度的數組而不是null

    如果返回null,對於每次調用到該方法的時候都需要做null判斷,否則很容易拋出null 指標異常,推薦返回一個零長度的數組,在通常情況下,這樣的做法對效能幾乎沒有影響。

NO.28 為所有匯出的API元素編寫文檔注釋

需要增加註釋的地方:類、介面、建構函式、方法和域聲明,方法注釋的內容:

調用該方法的前提條件;

調用後的後續處理(如捕獲異常);

副作用(如方法啟動線程後帶來的安全性);

參數@param Describe;

返回@return Describe;

異常@throws  if.....;

注意:注釋中可以適用<p><code><tt>等HTML標籤,但>,<等標籤需要轉義。

NO.29 講局部變數的範圍最小化

在第一次適用局部變數的地方聲明他;

要防止局部變數在“使用它的塊”之外聲明,這樣會防止局部變數被意外使用;

幾乎每一個局部變數的需要初始化,如果沒有足夠的資訊來對一個變數進行有意義的初始化,那就延遲這個聲明,直到可以初始化為止;

其他的方法如,把一個變數多的方法分成兩個,每次操作一個方法,減少變數之間的幹擾。

NO.30 瞭解和使用庫

    不要從頭髮明輪子,如果你要做的事情是很常見的,就去查下有沒有這樣的實作類別,如果有,則使用它,這樣會降低你實現相應功能的投入和代碼的出錯率。

NO.31 如果要求精確的答案,請避免使用 float和 double

      float和 double不適合表示貨幣,在平時的使用中應該避免;如果希望系統來處理十進位的小數點,可以使用 BigDocimal,如果不考慮小數的處理,數值範圍沒有超過 9位的則可以用 int來處理,如果不超過 18位的,則可以用 long來處理,超過 18位的就必須用 BigDecimal處理。

NO.32 如果其他類型更適合,則盡量避免使用字串

    如果可以使用更加合適的資料類型,或者可以編寫更加恰當的資料類型(如 DO、 POJO、枚舉等),那麼應該避免使用字串來表示對象,若使用不當,字串比其他類型更加笨拙,缺乏靈活性。

NO.33 瞭解字串串連的效能

    為串連 N個字串而重複得地使用“ +”串連,要消耗 N的平方層級的時間。為了獲得更高的效能,請使用 StringBuffer代替 String。

NO.34 通過介面引用對象

    應該優先使用介面而不是類來引用對象,如果有合適的介面存在,那麼對參數的傳回值、變數和域的聲明都應該使用介面類型,如 Vector是 List介面的實現,在聲明時應該如下:
List subscribers = new Vector();<br />//而不是<br />Vector subscribers = new Vector();

例外的情況:


① 當沒有合適的介面存在,可以用類而不是介面來引用一個對象,如: String、 Integer;

② 當一個對象是基本類型的類,而不是介面時,應該用相關的基類引用這個對象,如: java.util.TimerTask;

③ 當一個類實現了一個介面,單它提供了介面中不存在的額外方法,如果程式依賴於這些額外的方法,那麼這樣的類應該只被用來引用它的執行個體,永遠不應該被用作參數類型。

NO.35 介面優先於映像機制(反射機制)

    反射機制是 Java一項強大的功能,對於一些特定複雜的程式設計中非常必要(如現在很流行的 spring架構),但在並非必須使用反射機制時,盡量避免使用反射,原因如下:

     ① 它在編譯時間不會進行類型檢查;

     ② 實現代碼冗長乏味,不易閱讀;

     ③ 效能與一般的方法調用相比,要低下很多;

    如果一個程式必須要與編譯時間未知的類一起工作,那麼最好是用反射執行個體化對象,而訪問對象時使用編譯時間刻已知的某個介面或者父類。

NO.36 謹慎地使用本地方法

    盡量使用 Java自身提供的方法來代替本地方法(如用 Java提供的新功能來代替以前只有 C語言能實現個的功能),這樣可以使系統變得更加安全,系統可移植性更高,也使代碼變得更加容易閱讀,如果一定要使用本地方法,請加強測試,並儘可能的少用。

NO.37 謹慎地進行最佳化

    努力寫好的程式而不是快的程式,程式要體現資訊隱藏的原則,,效能問題應該是設計階段就考慮,要避免那些限制效能的設計決定,如:應該用複合模式的公有類使用繼承,則該類的效能永久的受其父類效能的影響,為了獲得好的效能而對 API進行修改並非是一個好的做法,通常,這些做法對效能並沒什麼多大的影響,如果一個系統有了清晰、簡明、結構良好的實現,請謹慎對其進行最佳化,因為 80%的效能問題存在於 20%的代碼中,找出影響效能的代碼才是問題的關鍵,可以藉助一些效能分析的工具。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.