2012-07-11 37 views
2

我有一個方法使用了一些嵌套的if語句,所以我想知道是否有更好的方法來編寫相同的邏輯。重寫一些嵌套的if語句的選項

比如我想刪除避免兩次

_typologyRepository.Update(typology); 
_typologyRepository.Save(); 

你能指出我出了正確的方向?由於

public void Update(Typology typology, string nameOriginalValue) 
    { 
     if (typology.Name == nameOriginalValue) 
     { 
      _typologyRepository.Update(typology); 
      _typologyRepository.Save(); 
     } 
     else 
     { 
      if (IsUniqueName(typology.Name)) 
      { 
       _typologyRepository.Update(typology); 
       _typologyRepository.Save(); 
      } 
      else 
       _validatonDictionary.AddError("Name", errorMessageNameUnique); 
     } 
    } 
+4

屬於代碼審查。 – 2012-07-11 18:37:34

+0

你想要邏輯運算符。 http://msdn.microsoft.com/en-us/library/6a71f45d(v=vs.71).aspx – asawyer 2012-07-11 18:37:59

+0

代碼審查?我把它添加爲標籤? – GibboK 2012-07-11 18:38:14

回答

7
if (typology.Name == nameOriginalValue || IsUniqueName(typology.Name)) 
{ 
    _typologyRepository.Update(typology); 
    _typologyRepository.Save(); 
} 
else 
{ 
    _validatonDictionary.AddError("Name", errorMessageNameUnique); 
} 
1

RedFilter的答案是它應該怎麼寫。另外一個關於你的代碼的說明:

通常,當人們使用if/elses級聯時,它們將所有內容都保存在相同的縮進級別。 RedFilter的答案是更好的,因爲你不需要級聯if/elses,但如果你確實需要它們,大多數人會這樣寫:

public void Update(Typology typology, string nameOriginalValue)    
    {                    
     if (typology.Name == nameOriginalValue)         
     {                   
      _typologyRepository.Update(typology);         
      _typologyRepository.Save();           
     }                   
     else if (IsUniqueName(typology.Name))          
     {                   
      _typologyRepository.Update(typology);         
      _typologyRepository.Save();           
     }                   
     else                  
      _validatonDictionary.AddError("Name", errorMessageNameUnique);   
     }                   
    }                    
+0

感謝Sam的回答,我真的很感謝你的見解! – GibboK 2012-07-11 18:47:35