Информация

Дата основания
2008
Местоположение
Россия
Сайт
www.viva64.com
Численность
31–50 человек
Дата регистрации

Блог на Хабре

Обновить
Комментарии 12

А если брать не интересные ошибки, а самые массовые и типичные, то что будет в ТОПе?

По идее V3019 должно кануть в лету из-за C#7 благодаря синтаксису вида
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.

Или перестать страдать ерундой и выделить кусок кода в отдельный метод.


Ну или, как вариант, просто перестать бояться писать слово else…

НЛО прилетело и опубликовало эту надпись здесь
Хватит и
_rawOuterXml = value ?? "";
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.