2011-05-10 6 views
4
public class BloodPressure { 
    public Int16? Diastolic { get; set; } 

    private Boolean IsValid { 
     get { 
      var valid = false; 

      if (this.Diastolic.HasValue && this.Systolic.HasValue) { 
       if ((this.Diastolic.Value >= 0) && (this.Systolic.Value >= 0)) { 
        valid = true; 
       } 
      } 

      return (valid); 
     } 
    } 

    public Int16? Systolic { get; set; } 

    public override String ToString() { 
     var result = ""; 

     if (this.IsValid) { 
      result = this.Systolic.Value.ToString("0") + "/" + this.Diastolic.Value.ToString("0"); 
     } 
     else { 
      result = null; 
     } 

     return (result); 
    } 
} 

이 ReSharper에서 약 불평 라인입니다. ReSharper는 그것을보고 있지 않습니까, 아니면 다른 것에 대해 불평합니까?ReSharper에서 가능한 InvalidOperationException이

흥미롭게도,이 부분에 문제가되지 않습니다 물건의

if ((this.Diastolic.Value >= 0) && (this.Systolic.Value >= 0)) { 
    valid = true; 
} 
+1

값을 조작하기 전에 IsNotNull(), IsValid()와 같은 유효성 검사 메서드를 호출하는 경우가 자주 있습니다. Resharper는 주석 속성 (예 : NotNull)에 대한 탁월한 개념을 가지고 있습니다. Jetbrains이 더 나아가 EnsuresNotNull ("paramName"), EnsuresNotNull ("propertyName"), EnsuresNotNull ("fieldName")과 같은 것들을 구현하는 것이 좋은 아이디어 일 것입니다. 이것은 –

답변

6

ReSharpers 감지 기능이 그 경계를 가지고있다. ReSharper는 this.IsValid에 대한 호출이 기본적으로 해당 문제와 관련하여 this.Diastolic.HasValue && this.Systolic.HasValue과 동일하다는 것을 인식하지 않습니다. 즉, ReSharper는 동일한 메소드/속성에서만 해당 검사를 찾습니다.

+0

과 같은 wornings을 제거 할 수있는 기회를 줄 것입니다. 일부 고객은 ReSharper 문제에 대해 등급을 매기므로이 문제를 어떻게 해결할 것을 제안합니까? 'IsValid' 속성을 유지하여 ToString()의 유효성 검사 로직이 너무 심하게되지 않도록하고 싶습니다. – Yuck

+6

'IsValid'를'IsValid' 안에있는 코드로 바꾸면 실제로 그 경고가 제거되는지 확인하십시오. 그렇다면 ReSharper가이 특별한 경고를 무시하도록하십시오. ReSharper 문제는 더 이상 없습니다 ;-) * (ReSharper 문제 수에 대한 등급 코드는 무의미합니다) * –

+0

'IsValid' 논리를 ToString()으로 옮기는 것은 사실 경고를 없애라. 이전의 성명서를 근거로하면 아마 이런 식으로 남을 것입니다. 확실히 못 생겼어. – Yuck

관련 문제