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