【重拾Effective Java】二

  • 將局部變量的作用域最小化
    要使得局部變量的作用域最小化,最有力的方法就是在第一次使用它的地方聲明,這樣可以避免代碼混亂。
    過早的聲明局部變量不僅使得它的作用域過早的擴展,而且也造成結束過於晚了。局部變量的作用域從它被聲明的點開始擴展,一直到外圍塊(block)的結束處。
    幾乎每個局部變量的聲明都應該包含一個初始化表達式。
  • for-each循環優先於傳統的for循環
    for-each循環通過完全隱藏迭代器或者索引變量,避免了混亂,而且這樣的做法也更加高效。for-each循環在簡潔性和預防bug方面有着傳統for循環無法比擬的優勢,並且性能更好,應儘可能少使用傳統的for循環。
    不過也有幾種情況下無法使用for-each,如下三種:
  • 過濾,如果需要遍歷集合,並刪除選定的元素,就需要顯示的迭代器了,以便做刪除操作。
  • 轉換,如果需要遍歷列表或者數組,並取代它部分或者全部元素值,就需要迭代器或者數組索引,以便設定元素的值。
  • 平行迭代,如果需要並行的遍歷多個集合,就需要顯式的控制迭代器或者索引變量。
  • 如果需要精確的答案,少使用float和double
    這兩種類型數據主要用於科學計算,它們執行的是二進制浮點運算。
    如下:
    1.03-0.42=0.6100000000000001

  • 基本類型優於裝箱基本類型
    基本類型只有值,而裝箱基本類型則具有與它們的值不同的同一性。也就是說,兩個裝箱基本類型可以具有相同的值和不同的同一性。
    基本類型只有功能完備的值,而每個裝箱基本類型除了它對基本類型的所有功能之外,還有個非功能值:null.
    基本類型通常比裝箱基本類型更節省時間和空間。

  • 儘可能少使用字符串
    字符串不適合代替枚舉類型
    字符串不適合代替聚集類型
    字符串不適合代替能力表
    在字符串連接方面,常用“+”,但在數據過大時,儘量避免使用,應當推薦使用:
    StringBuilder b;
    b.append(所連接的內容);

  • 在接口能代替類的時候,儘量選擇使用接口
    如果有合適的接口存在,那麼對於參數,返回值,常量和域來說,就都應該使用接口類型進行聲明。創建一個對象往往是極其消耗內存和時間的。

發佈了70 篇原創文章 · 獲贊 196 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章