Тернарный оператор: плохая или хорошая практика?

Я ищу причины использовать/не использовать его и для оригинальных идей (в их использовании и их замене).


Дубликат:

Связанный (но не задающий вопрос вопрос):

Ответы

Ответ 1

Для удобства чтения я использую только тройной, если он вписывается в одну строку 80- char.

Ответ 2

Хорошо для коротких тегов в языках шаблонов, таких как PHP, например:

<form>
<input type='radio' name='gender' value='m' <?=($gender=='m')?"checked":""?>>Male
<input type='radio' name='gender' value='f' <?=($gender=='f')?"checked":""?>>Female
</form>

Хорошо для переключателей в javascript/jQuery:

var el = $("#something");
$(el).is(':visible') ? $(el).hide("normal") : $(el).fadeIn("normal");

Хорошо для назначения, особенно если конкретное имя переменной может принимать разные типы:

$var = ($foo->isFoo()) ? 'Success!' : false;

Ответ 3

Это что-то вроде цикла for. Имеет смысл для того, что он сделал, но когда вы пытаетесь вставить в него больше вещей, он становится нечитаемым.

Ответ 4

Условный тернарный оператор определенно может быть чрезмерным, а некоторые находят его довольно нечитаемым. Тем не менее, я считаю, что в большинстве ситуаций может быть очень чисто, что ожидается булевское выражение при условии, что его намерение ясно. Если цель не ясна, лучше использовать временную переменную с ясным именем, значение которого назначается с помощью оператора if, или использовать функцию с хорошим именем, которое возвращает ожидаемое значение.

Ответ 5

Какой трёхмерный оператор вы говорите?

Тернарный оператор - это любой оператор, который принимает три аргумента.

Если вы говорите о?: operator, это называется условным оператором. Я не могу жить без него, лично. Операторы if-else выглядят настолько запутанными для меня, особенно при выполнении условного присвоения. Некоторые жалуются, что это выглядит беспорядочно, но это все еще возможно (особенно если вы используете Visual Studio или другую интеллектуальную среду форматирования), чтобы сделать вещи легко читаемыми, и вы все равно должны комментировать все свои условные обозначения.