Что самый чистый путь состоит в том, чтобы записать этому если.. тогда логика?

Попробуйте свойство переполнения CSS,

div.ex1 {
  overflow: scroll;
}

Подробнее здесь

8
задан Dana 29 January 2009 в 21:56
поделиться

17 ответов

return String.IsNullOrEmpty(returnUrl) ? 
            RedirectToAction("Open", "ServiceCall") : 
            Redirect(returnUrl);

Я предпочитаю это.

Или альтернатива:

return String.IsNullOrEmpty(returnUrl)  
            ? RedirectToAction("Open", "ServiceCall")  
            : Redirect(returnUrl);
30
ответ дан 5 December 2019 в 04:28
поделиться

Первый. Вам не нужен никто больше при возврате значения в если оператор. Так:

if (!String.IsNullOrEmpty(returnUrl))
    return Redirect(returnUrl);
return RedirectToAction("Open", "ServiceCall");
-1
ответ дан 5 December 2019 в 04:28
поделиться

Когда у меня иногда есть только одна строка, я уплотняю если оператор как это:

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

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

0
ответ дан 5 December 2019 в 04:28
поделиться

LFSR's "еще" решение является самым удобным в сопровождении и читаемым.

Используя отдельное else пункт позволяет логике быть добавленной, непреднамеренно не изменяя поток. И это плохо достаточно имеет несколько точек выхода, не скрывая двух из них в единственном операторе тернарного оператора!

0
ответ дан 5 December 2019 в 04:28
поделиться

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

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

0
ответ дан 5 December 2019 в 04:28
поделиться

Как насчет:

if (!String.IsNullOrEmpty(returnUrl))
    return Redirect(returnUrl);
else
    return RedirectToAction("Open", "ServiceCall");
0
ответ дан 5 December 2019 в 04:28
поделиться

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

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

Таким образом, работы, является читаемым и нерезервированным.

0
ответ дан 5 December 2019 в 04:28
поделиться

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

0
ответ дан 5 December 2019 в 04:28
поделиться

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

if ( ) 
{
    return ... 
}
return 

Для меня это читает как "значение по умолчанию", можно объединить больше условий в цепочку, но в конце существует значение по умолчанию.

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

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

Это - стиль C# для помещения квадратных скобок и в одну строку?

if ( ) 
{
}
else
{
}

Я видел, что это проникало в примеры кода Java в Так, и я задаюсь вопросом, это - первопричина.

Править

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

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

Вместо этого (который был бы предпочтенным Java),

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

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

0
ответ дан 5 December 2019 в 04:28
поделиться

Если бы это - полнота метода затем, я сказал бы, что второе (использование еще) немного более изящно. Если бы у Вас еще есть предыдущий код или (особенно) намного больше кода перед возвратом в случай, я сказал бы, что лучше еще не поместить. Удерживается от кода, становящегося слишком с отступом.

т.е. также:

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

или

void myfunc()
{
    // ... maybe some code here ...

    if(!String.IsNullOrEmpty(returnUrl))
    {
       return Redirect(returnUrl);
    }

    // ... a bunch of other code ...

    return RedirectToAction("Open", "ServiceCall");
}
1
ответ дан 5 December 2019 в 04:28
поделиться

Устраните 'двойное отрицательное' и используйте полностью расширенный стиль. Я уверен, что большинство компиляторов теперь может соответственно оптимизировать код от Вашего имени, таким образом, никакая причина взять ярлыки для удобочитаемости.

1
ответ дан 5 December 2019 в 04:28
поделиться

Я думаю, что это - довольно маленький вопрос стиля. Я утверждал бы, что Ваши два образца одинаково читаемы.

Я предпочитаю первого, но другие люди предпочитают только одну точку выхода от функции и вероятно предложили бы что-то как:

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

return result;
9
ответ дан 5 December 2019 в 04:28
поделиться

Мне нравится первый пример, потому что более очевидно, что эта выборка возвратится. Если оба returns находятся в блоках с отступом, это прилагает просто немного больше умственных усилий для сообщения.

5
ответ дан 5 December 2019 в 04:28
поделиться

второй путь лучше, никакой беспорядок о том, что Вы имеете в виду...

9
ответ дан 5 December 2019 в 04:28
поделиться

Одна проблема стиля:

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

Когда Вы уравновешиваете двойное отрицание, оно читает намного лучше, неважно, которые заключают в фигурные скобки стиль, который Вы выбираете. Код, который читает лучше, является всегда лучшим ;)

21
ответ дан 5 December 2019 в 04:28
поделиться

Я полагаю, что лучше удалить не (отрицание) и получить положительное утверждение сначала:

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

- или -

// Andrew Rollings solution
return String.IsNullOrEmpty(returnUrl) ? 
                    RedirectToAction("Open", "ServiceCall") : 
                    Redirect(returnUrl);
24
ответ дан 5 December 2019 в 04:28
поделиться

Этот код чувствует себя грязным из-за неизбежной двойной отрицательной логики (и вещи перестановки вокруг не собирается разрешать его). Какой бы ни расположение, которое Вы используете, я думаю, что необходимо добавить некоторые комментарии так, чтобы читатель не должен был получше вглядываться:

if (!String.IsNullOrEmpty(returnUrl))
{
  // hooray, we have a URL
  return Redirect(returnUrl);
}
else
{
  // no url, go to the default place
  return RedirectToAction("Open", "ServiceCall");
}
1
ответ дан 5 December 2019 в 04:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: