Какой стиль кодирования вы используете для тернарного оператора?

Я сохраняю его в одну строку, если она короткая. В 9X_php5 последнее время я использую этот стиль для 9X_coding-style более длинных или вложенных тернарных операторных 9X_php выражений. Надуманный пример:

$value = ( $a == $b ) 
            ? 'true value # 1'
            : ( $a == $c )
                ? 'true value # 2'
                : 'false value';

Какой стиль 9X_php-fpm вы используете или считаете наиболее читаемым?

Изменить: (когда использовать тернарный оператор)

Я 9X_language-agnostic обычно избегаю использования тернарных операторов 9X_php-frameworks более чем на 2 уровня. Я предпочитаю двухуровневый 9X_code-style тернарный оператор, а не двухуровневый if-else, когда 9X_code-style я повторяю переменные в сценариях шаблонов 9X_coding-style PHP.

72
0
14
Общее количество ответов: 14

Ответ #1

Ответ на вопрос: Какой стиль кодирования вы используете для тернарного оператора?

Обычно следует избегать тернарного оператора, но 9X_coding-standards эта форма вполне читабельна:

  result = (foo == bar)  ? result1 :
           (foo == baz)  ? result2 :
           (foo == qux)  ? result3 :
           (foo == quux) ? result4 : 
                           fail_result;

Таким образом, условие 9X_php-fpm и результат хранятся вместе в одной строке, и 9X_php5 довольно легко просмотреть и понять, что 9X_language-agnostic происходит.

104
6

  • @pilsetnieks, Тернарные операторы имеют возвращаемые значения. Операторы switch этого не делают. В приведенном выше коде всегда будет определен результат. Код, который по ...

Ответ #2

Ответ на вопрос: Какой стиль кодирования вы используете для тернарного оператора?

Я стараюсь не использовать тернарный оператор 9X_language-agnostic для написания вложенных условий. Он бросает 9X_language-agnostic вызов удобочитаемости и не дает дополнительной 9X_php5 ценности по сравнению с условным выражением.

Я 9X_php5 использую его только в том случае, если 9X_clean-code он умещается на одной строке и совершенно 9X_coding-style ясно, что это означает:

$value = ($a < 0) ? 'minus' : 'plus';

83
2

  • Я сравнил свой if-блок с его альтернативой как тернарный оператор, и когда тернарный оператор имел ...

Ответ #3

Ответ на вопрос: Какой стиль кодирования вы используете для тернарного оператора?

Лично я использую тернарный оператор, только 9X_php-fpm если он умещается в одной строке. Если нужно 9X_php-fpm охватить, то пришло время для старого доброго

if else if else

26
0

Ответ #4

Ответ на вопрос: Какой стиль кодирования вы используете для тернарного оператора?

стиль, который я иногда использую, и о котором 9X_php.ini я говорю, поскольку о нем не упоминалось, выглядит 9X_clean-code следующим образом:

$result = ($x == y)
        ? "foo"
        : "bar";

..но обычно только в том 9X_coding-standards случае, если размещение всего в одной строке 9X_php.ini делает его слишком длинным. Я считаю, что 9X_language-independent наличие = ? : всей строки делает его более аккуратным.

26
0

Ответ #5

Ответ на вопрос: Какой стиль кодирования вы используете для тернарного оператора?

Вложенные тернарные операторы PHP ведут 9X_coding-standards себя иначе.

Этот синтаксис проходит все следующие 9X_php тесты. На основе http://deadlytechnology.com/web-development-tips/php-ternary-syntax/

$myvar = ($x == $y)
?(($x == $z)?'both':'foo')
:(($x == $z)?'bar':'none');

.

См .: http://au.php.net/ternary

Пример № 3 «Неочевидное 9X_php5 троичное поведение» объясняет, почему следующее 9X_code-style не работает в PHP.

$x = 1;
$y = 2;
$z = 3;   
$myvar = ($x == $y) 
       ? "foo" 
       : ($x == $z) 
         ? "bar" 
         : "none";  
$myvar == 'none'; // Good

$x = 1;
$y = 2;
$z = 1;   
$myvar = ($x == $y) ? "foo" : ($x == $z) ? "bar" : "none";  
$myvar == 'bar'; // Good

$x = 1;
$y = 1;
$z = 3;   
$myvar = ($x == $y) ? "foo" : ($x == $z) ? "bar" : "none";  
$myvar == 'bar'; // Bad!

$x = 1;
$y = 1;
$z = 1;   
$myvar = ($x == $y) ? "foo" : ($x == $z) ? "bar" : "none";  
$myvar == 'bar'; // Bad!

17
1

  • Осторожно! Вложенные троичные файлы в PH ...

Ответ #6

Ответ на вопрос: Какой стиль кодирования вы используете для тернарного оператора?

тернарные операторы - это короткие эффективные 9X_language-independent способы написания простых операторов if. Они 9X_code-style не должны быть вложенными или трудными для 9X_php чтения. Помните: вы пишете программу один 9X_language-independent раз, а ее читают 100 раз. Читать должно 9X_php.ini быть легче, чем писать.

13
0

Ответ #7

Ответ на вопрос: Какой стиль кодирования вы используете для тернарного оператора?

Я обычно заключаю условие в круглые скобки: (a 9X_language-independent == b)? 1: 0

6
0

Ответ #8

Ответ на вопрос: Какой стиль кодирования вы используете для тернарного оператора?

Я не согласен с общим мнением. Я вроде как 9X_php-fpm Имран со своим стилем условного оператора. Если 9X_ternary-operator он аккуратно умещается на одной строчке, я 9X_code-style держу его на одной строчке. Если он не помещается 9X_coding-standards четко в одну строку, я разбиваю его, но 9X_ternary-operator я использую только одну табуляцию (4 пробела; у 9X_php-fpm меня VS установлен для вставки пробелов 9X_ternary-operator для табуляции) для отступа. Я не сразу перехожу 9X_php-fpm к if - else, потому что в большинстве случаев 9X_php.ini условный оператор имеет больше смысла в 9X_ternary-operator контексте. (Однако, если это не имеет смысла 9X_coding-style с точки зрения контекста, я просто не использую 9X_language-independent его.)

Кроме того, я не вкладываю условные 9X_php5 операторы. На этом этапе мне действительно 9X_php5 трудно читать, и пора перейти к более подробному 9X_code-style стилю if - else.

3
0

Ответ #9

Ответ на вопрос: Какой стиль кодирования вы используете для тернарного оператора?

Тернарное условное выражение может сделать 9X_clean-code код более чистым и элегантным, а также, что 9X_coding-standards наиболее важно, помочь вам сосредоточить 9X_php-fpm внимание на правильных вещах и избежать 9X_php.ini повторений. Подумайте об их использовании, но 9X_coding-standards не делайте этим код менее читабельным. В 9X_code-style VB.NET:

    'before refactoring 
    If x = 0 Then                    ' If-Then-Else puts emphasis on flow control
        label = "None"
    Else
        label = Foo.getLabel(x)      '  If-Then-Else forces repeat of assignment line
    End If

    'after refactoring    
    label = If(x = 0, "None", Foo.getLabel(x)) ' ternary If puts emphasis on assignment

Обратите внимание, что «он менее 9X_php-frameworks читабелен» - это не то же самое, что «Я 9X_php-frameworks не привык к этому».

3
0

Ответ #10

Ответ на вопрос: Какой стиль кодирования вы используете для тернарного оператора?

«Надуманный пример» - это то, как я бы сделал 9X_php-frameworks отступ, за исключением того, что я бы сделал 9X_coding-standards отступ от левого поля, а не в зависимости 9X_php от того, где (или что-то еще в строке выше.

Для 9X_php.ini тернарных недоброжелателей - главное - удобочитаемость. Если 9X_coding-style вы не думаете, что это делает код более 9X_language-agnostic читаемым, не используйте его. Но по крайней 9X_php-fpm мере иногда я нахожу обратное.

2
0

Ответ #11

Ответ на вопрос: Какой стиль кодирования вы используете для тернарного оператора?

Я им не пользуюсь. Мне всегда пахло попыткой 9X_php-frameworks сэкономить место и вводить исходный код 9X_php-fpm в ожидании, что небольшой исходный код == более 9X_language-agnostic эффективный скомпилированный код.

Я вообще 9X_language-independent не нахожу его читабельным, но во многом 9X_code-style потому, что я просто никогда им не пользуюсь.

1
1

  • Хех. Это мертвая идея, и вся эта позиция пронизывает дизайн C. Массивы == указатели, оператор запятой, а также операторы инкремента и декремента до и после - другие замечательные примеры. Это одна из причин, почему я считаю, что Ада лучше. ...

Ответ #12

Ответ на вопрос: Какой стиль кодирования вы используете для тернарного оператора?

Имран, вы прекрасно это отформатировали. Однако 9X_code-style тернарный оператор становится нечитаемым, если 9X_php-fpm вы вкладываете больше двух. блок if-else 9X_php5 может дать вам дополнительный уровень понятной 9X_php вложенности. Кроме того, используйте программирование 9X_php на основе функций или таблиц.

1
0

Ответ #13

Ответ на вопрос: Какой стиль кодирования вы используете для тернарного оператора?

$foo = (isset($bar)) ? $bar : 'default';

9X_coding-standards

1
0

Ответ #14

Ответ на вопрос: Какой стиль кодирования вы используете для тернарного оператора?

Лично я использую его только для присвоения 9X_php5 переменной (в java), например:

String var = (obj == null) ? "not set" : obj.toString();

и (другой 9X_code-style пример) при использовании функции, не допускающей 9X_clean-code нулевого параметра, например:

String val; [...]
int var = (val == null) ? 0 : Integer.parseInt(val);

1
0