Что такое изящный способ записать это?
if (lastSelection != null)
{
lastSelection.changeColor();
}
else
{
MessageBox.Show("No Selection Made");
return;
}
changeColor()
пустая функция и функция, которая работает, вышеупомянутый код является пустой функцией также.
Вы можете уменьшить беспорядок, изменив условие:
if (lastSelection == null)
{
MessageBox.Show("No Selection Made");
return;
}
lastSelection.changeColor();
Это еще один способ реализации этого.
Action _action = (lastSelection != null
?
new Action(lastSelection.changeColor)
:
() => Console.WriteLine("No Selection Made"));
_action.Invoke();
Возможно, это немного перебор, но люди, поддерживающие ваш код, наверняка будут чесать в затылках: -)
Практика, которая быстро набирает обороты, состоит в том, чтобы сначала записать null, как показано ниже:
if (null == lastSelection)
{
MessageBox.Show("No Selection Made");
return;
}
lastSelection.changeColor();
Хотя мне лично очень не нравится наличие нескольких операторов возврата в функции, согласно защитному программированию, которое я видел, вы отлавливаете условие ошибки и выход, а все остальное пропускаете через себя:
if(lastSelection == null)
{
MessageBox.Show("No Selection Made");
return;
}
lastSelection.changeColor();
Трудно сказать, как бы я сделал это в своей работе, не видя всей функции, в которую это входит.
Я думаю, ваш код хорош: вы сначала проверили нормальный случай (lastSelection! = Null)
, а затем ненормальный.
Я могу просто добавить одну модификацию:
if (lastSelection != null)
{
lastSelection.changeColor();
//your other normal code
}
else
{
MessageBox.Show("No Selection Made");
//return; //no need for this now
}
Видя, что все остальные получили хорошие ответы, НЕ делайте этого :
if (lastSelection == null) goto ERR;
lastSelection.changeColor();
//... possibly more stuff...
return;
ERR:
MessageBox.Show("No Selection Made");
Я был бы склонен сделать так, чтобы lastSelection
никогда не был нулевым, и чтобы он указывал на "пустой" объект в тех случаях, когда он будет нулевым в текущей конструкции. Тогда проверка на null не нужна. Инженерия возможных ошибок в системе - это всегда хорошая практика.
То есть, я бы спросил, является ли нелепостью в коде то, как вы делаете проверку нуля, или тот факт, что проверка нуля вообще требуется.