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的可能出現InvalidOperationException
result = this.Systolic.Value.ToString("0") + "/" + this.Diastolic.Value.ToString("0");
由於我打電話給我驗證邏輯事先我可以肯定的是收縮壓和舒張壓均會對值我可以使用。 ReSharper沒有看到,還是抱怨別的?
有趣的是,它不會有一個問題,本節:
if ((this.Diastolic.Value >= 0) && (this.Systolic.Value >= 0)) {
valid = true;
}
在處理值之前調用IsNotNull(),IsValid()等驗證方法時經常出現這種情況。 Resharper具有很好的註釋屬性概念(即NotNull)。對於Jetbrains來說,進一步實施諸如EnsuresNotNull(「paramName」),EnsuresNotNull(「propertyName」),EnsuresNotNull(「fieldName」)等是個好主意,它會給我們一個機會來擺脫像這樣的冒險 – 2015-11-02 16:24:46