
Суета вокруг идей
6 min

People manager
[Conditional("DEBUG")]
[DebuggerStepThrough]
public void VerifyPropertyName(string propertyName)
{
// Verify that the property name matches a real,
// public, instance property on this object.
if (TypeDescriptor.GetProperties(this)[propertyName] == null)
{
string msg = "Invalid property name: " + propertyName;
if (this.ThrowOnInvalidPropertyName)
throw new Exception(msg);
else
Debug.Fail(msg);
}
}
Если что-то выглядит как утка, плавает как утка и крякает как утка, то это, вероятно, утка и есть.
Если вы используете ReSharper, то вы, наверняка, знакомы с его подсветкой "Possible 'NullReferenceException'". В этой статье я кратко расскажу об анализаторе, который выводит предупреждения такого рода, и о том, как ему помочь делать это лучше.
Сразу рассмотрим пример:
`public string Bar(bool condition)
{
string iAmNullSometimes = condition? «Not null value»: null;
return iAmNullSometimes.ToUpper();
}
* This source code was highlighted with Source Code Highlighter.`
ReSharper справедливо подсветит iAmNullSometimes во второй строке метода с таким предупреждением. Теперь выделим метод:
`public string Bar(bool condition)
{
string iAmNullSometimes = GetNullWhenFalse(condition);
return iAmNullSometimes.ToUpper();
}
public string GetNullWhenFalse(bool condition)
{
return condition? «Not null value»: null;
}
* This source code was highlighted with Source Code Highlighter.`
После этой операции предупреждение пропадает. Почему так происходит?