2

ネストされた if ステートメントを使用するメソッドがあるので、同じロジックを記述するためのより良い方法があるかどうかを知りたいです。

たとえば、2回を避けて削除したい

_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 の答えは、それがどのように書かれるべきかです。ただし、コードに関するもう 1 つの注意事項:

通常、if/else をカスケードする場合、すべてを同じインデント レベルに保ちます。カスケード if/else は必要ないため、RedFilter の回答の方が優れていますが、カスケードが必要な場合は、ほとんどの人が次のように記述します。

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 に答える