Comments 12
А если брать не интересные ошибки, а самые массовые и типичные, то что будет в ТОПе?
По идее V3019 должно кануть в лету из-за C#7 благодаря синтаксису вида
V3080 и V3095 быть может благодаря nullable reference types в C#8 тоже когда-нибудь в необозримо отдалённом будущем…
if (something is SomeType alias) {...}
V3080 и V3095 быть может благодаря nullable reference types в C#8 тоже когда-нибудь в необозримо отдалённом будущем…
Возможно, будет то же. На моей практике больше всего ошибок находишь именно там, где код «очевиден», типа истории с «password». Так что с местами в целом согласен.
if (string.IsNullOrEmpty(value))
{
_rawOuterXml = string.Empty;
}
_rawOuterXml = value;
В отрывке выше хорошо видно, почему в языках крайне полезен функциональный синтаксис.
В условных Kotlin/Scala код корректнее выглядит так, как ниже. А потому в нем сложнее забыть про отсутствие else, так как без else выражение просто не скомпилируется.
_rawOuterXml = if(string.IsNullOrEmpty(value))
{
string.Empty;
}
else
{
value;
}
Можно надеяться, что в C# добавят if-expression, по аналогии со switch-expression'ами в C# 8.
А чем тернарный оператор не угодил?
_rawOuterXml = string.IsNullOrEmpty(value) ? "" : value;
Я про сложные выражения. Для коротких Вы полностью правы — лучше использовать ?:, который, по сути, тоже является функциональным.
А вот если в каждой ветки условия необходимо сделать что-то еще, то тернарного оператора не хватает, а потому желательно использование функционального if`a.
Хватит и
_rawOuterXml = value ?? "";
Sign up to leave a comment.
ТОП-10 ошибок, найденных в C#-проектах за 2020 год