讀Clean Code 隨感 (自學·不斷更新)

總原則:I don't write them that way to start. I don't think anyone could.(我並不是一開始就會按規則寫,我想也沒人做得到)       --Robert.C.Martin

 

1. 如果新加入了一個業務模塊,與之前的業務功能類有名稱上的衝突,需要加入部分名稱以區別時:後綴強於前綴,如:

原:UserService 新 UserService_News > News_UserService

因爲在新的模塊中,肯定不止一個類要加入_News,如果改用News_前綴,那麼用IDE輸入News_來找這個Service時,你可以預想得到這個代碼提示的列表會有多麼長吧?

 

2. 對於多層且富有複雜業務邏輯的代碼,使用異常處理機制要優於if語句

 

3. 使用try-catch時應該儘量讓異常處理與業務邏輯代碼分隔開。

      code 3.1  -- 異常處理與業務邏輯混雜

public void addUser(User user){
   try{                             
      doSth1()...
      if()...
      else()...
      doSth2()..
   }catch(Exception1 e1){
       ..
   }catch(Exception2 e2){
       ..
   }finally{
       ..
   }
}
  

      code 3.2 -- 異常處理與業務邏輯分開
 
public void addUser(User user){
   try{
      //將業務邏輯處理委派到doAddUser中,此方法中主要負責對不同異常的處理
      //同時try..方法命名也很貼切
      tryAddUser(user);                    
   }catch(Exception1 e1){
       ..
   }catch(Exception2 e2){
       ..
   }finally{
       ..
   }
} 

public void tryAddUser(User user) throws Exception1,Excepion2{           //專心處理業務邏輯,將異常拋出即可
      doSth1()...
      if()...
      else()...
      doSth2()..
}


4. 儘量避免返回null值。

    4.1 在返回的List無數據時,儘量返回一個長度爲0的空List,而非null

    4.2 如果方法沒有找到某一個數據(如getUserByUserId等),則拋出一個UserNoFoundException會更加清晰

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章