java優秀通用設計,程式設計師基礎打牢叫22K以上,真的不心虛

java優秀通用設計,程序員基礎打牢叫22K以上,真的不心虛

現在很多程序員不屑基礎知識,我覺得基礎非常重要

我的口號是:基礎打牢,開車不飄

環境

java1.8


幫助人群

java軟件工程師、java後端開發、準備面試的java軟件開發、


通用程序設計

下面分析幾個典型的代碼設計,很多程序員知道用,卻不清楚這些細節


for-each循環優先於傳統for循環

循環在jdk1.5前都是 傳統for+Iterator方式

for(Iterator i=c.iterator();i.hasNext();) { (Element)i.next()}

jdk1.5後 for-each循環方式

for(Element e:elements){

doSomething(e);

}

注意

很多程序員都知道用for-each循環方式,因為代碼簡潔,其實不僅僅簡潔這麼簡單

  • 通過完全隱藏迭代器Iterator、索引變量,避免了混亂和出錯可能
  • for-each循環方式不會有性能損失
  • 把樣板代碼封裝起來了 ,使用者關心業務就可以
  • 在多層嵌套for循環,for-each循環方式威力就顯現出來了。

總之,for-each循環在簡潔性和預防BUG方面非常優秀

下面3種情況無法使用for-each循環

  1. 過濾 要遍歷集合,刪除指定元素,就需要使用顯示的Iterator,以便可以調用它的remove方法 ,切記刪除元素用Iterator的remove
  2. 轉換 如果需要遍歷集合,並取代它部分或全部的元素值,就需要集合Iterator、索引,以便設定元素的值。
  3. 平行迭代 如果需要平行遍歷多個集合,就需要顯示控制Iterator或索引變量

一句話總結,當需要精確控制操作元素索引位置時,請選擇傳統的for+Iterator方式


瞭如果需要精確的答案,請避免使用float和double

float和double類型主要為了科學計算和工程計算而設計。

貨幣計算切記用BigDeclmal,BigDeclmal好處完全控制舍入。

基本類型優先包裝類型

其實我根據阿里開發手冊寫過一篇,

包裝類大家天天用,細節很多都沒注意,我也吃了不少苦頭。

注意

  1. 基本類型只有值==,包裝類型是引用類型 equals
  2. 包裝類型初始值是null,基本類型初始如int 是0
  3. 基本類型更節省時間、空間。
  4. Comparator比較注意用基本類型去計算 >、
  5. Interge賦值到int有NPE風險,包裝類型注意防空啊

如果其他類型更合適,儘量避免使用字符串

  1. 如DTO對象的時間屬性不要String createTime,應該用Date;
  2. DTO中數量屬性建議用Interge,不要用int;
  3. 字符串不適合代替聚集類型,聚集類型建議用一個類對象來描述;
  4. domain對象中的狀態屬性,建議用枚舉類型,不要用String;

枚舉的好處,傳送門

總結

  • 如果有更合適的數據類型或者可以編寫更加適當的數據類型,就應該避免用字符串。
  • 不恰當的使用字符串,讓代碼變的更加笨拙、不靈活、速度慢、容易出錯。

很多程序員創建的pojo類,清一色的String類型。


通過接口引用對象

java精華多態,能用接口就用接口來定義類型

如果有合適的接口類型存在,那麼對於參數、返回值、遍歷和域,就都應該使用接口類型進行聲明。

接口、抽象可以用文章單獨來細講。

通過接口、或抽象類引用對象,讓代碼更加靈活


【內容參考資料:Effective Java 作者 美國 Joshua Bloch】好書建議大家可以看看。


分享到:


相關文章: