Какой самый чистый способ написать это, если .. тогда логика? - PullRequest
8 голосов
/ 30 января 2009

Они оба делают одно и то же. Один способ лучше? Очевидно, что если я напишу код, я буду знать, что я сделал, но как насчет того, кто его читает?

if (!String.IsNullOrEmpty(returnUrl))
{
    return Redirect(returnUrl);
}
return RedirectToAction("Open", "ServiceCall");

ИЛИ

if (!String.IsNullOrEmpty(returnUrl))
{
   return Redirect(returnUrl);
}
else
{
    return RedirectToAction("Open", "ServiceCall");
}

Ответы [ 17 ]

0 голосов
/ 30 января 2009

Когда у меня есть только одна строка, иногда я сжимаю выражение if следующим образом:

if(String.IsNullOrEmpty(returnUrl)) { 
  return RedirectToAction("Open", "ServiceCall"); 
}
else{ return Redirect(returnUrl); }

Хотя, глядя на это, у Эндрю Роллингса может быть лучшее решение, хотя я никогда не думал об его использовании до сегодняшнего дня.

0 голосов
/ 30 января 2009

С точки зрения обслуживания я предпочитаю первую версию. Я видел меньше ошибок с последовательным стилем «уйди раньше».

Тернарный оператор (? :) в порядке, но только если маловероятно, что новый код будет вставлен перед вторым оператором возврата. В противном случае, когда придет время добавить что-то новое во 2-й путь кода, троичный оператор должен в любом случае вернуться к блоку if / else.

0 голосов
/ 30 января 2009

Как здесь , но более читабельно:

return
  string.isNullorEmpty(returnUrl) ? 
     RedirectToAction("Open", "ServiceCall") :
     Redirect(returnUrl);

Этот способ работает, доступен для чтения и не является избыточным.

0 голосов
/ 30 января 2009

Первый. Вам больше ничего не нужно, если вы возвращаете значение внутри оператора if. Итак:

if (!String.IsNullOrEmpty(returnUrl))
    return Redirect(returnUrl);
return RedirectToAction("Open", "ServiceCall");
0 голосов
/ 30 января 2009

Мне нравится первый лучше.

if ( ) 
{
    return ... 
}
return 

Для меня это звучит как «по умолчанию», вы можете связать больше условий, но в конце есть значение по умолчанию.

Конечно, это вопрос стиля.

Дополнительный вопрос.

Это стиль C # - заключать квадратные скобки в одну строку?

if ( ) 
{
}
else
{
}

Я видел, как это проникло в примеры кода Java в SO, и мне интересно, что это коренная причина.

EDIT

@ Оуэн. Я имею в виду, это стиль C # с использованием этой формы?

if ()  
{
    code ... 
}
else
{
    code...
}

Вместо этого (это будет Java предпочтительнее )

if ( ) { 
    code ... 
} else { 
   code ...
}

В прошлом у меня были некоторые аргументы по этому поводу, но в большинстве случаев только с людьми из C #.

0 голосов
/ 30 января 2009

Как насчет:

if (!String.IsNullOrEmpty(returnUrl))
    return Redirect(returnUrl);
else
    return RedirectToAction("Open", "ServiceCall");
0 голосов
/ 30 января 2009

Не думайте, что есть лучший способ ... это зависит от каждого разработчика. Поэтому, прежде чем начинать проект, вы должны решить, что является стандартом кодирования ...

...