2

我有一个使用一些嵌套 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

2 回答 2

7
if (typology.Name == nameOriginalValue || IsUniqueName(typology.Name))
{
    _typologyRepository.Update(typology);
    _typologyRepository.Save();
}
else
{
    _validatonDictionary.AddError("Name", errorMessageNameUnique);
}
于 2012-07-11T18:38:56.490 回答
1

RedFilter 的回答是应该怎么写。不过,关于您的代码的另一条注释:

通常,当人们进行级联 if/else 时,他们会将所有内容保持在相同的缩进级别。RedFilter 的答案更好,因为您不需要级联 if/else,但如果您确实需要它们,大多数人会这样写:

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);        
      }                                                                         
  }                                                                             
于 2012-07-11T18:42:24.763 回答