Тернарный оператор: плохая или хорошая практика?
Я ищу причины использовать / не использовать его и для оригинальных идей (в их использовании и заменить их).
Дубликат:
Связано (но не касается задаваемого вопроса):
5 ответов
Для удобства чтения я использую троичную форму только в том случае, если она помещается в одну строку из 80 символов.
Подходит для коротких тегов в языках шаблонов, таких как 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;
Условный троичный оператор, безусловно, может быть чрезмерно использован, а некоторые считают его нечитаемым. Тем не менее, я считаю, что в большинстве ситуаций логическое выражение может быть очень чистым при условии, что его цель ясна. Если намерение не ясно, лучше использовать временную переменную с ясным именем, значение которой назначается с помощью оператора if, или использовать функцию с хорошим именем, которая возвращает ожидаемое значение.
Это что-то вроде for
петля. Имеет смысл для того, для чего это сделано, но когда вы пытаетесь засунуть в него больше материала, это становится нечитаемым.
О каком троичном операторе вы говорите?
Тернарный оператор - это любой оператор, который принимает три аргумента.
Если вы говорите о?: оператор, это называется условным оператором. Я не могу жить без этого больше, лично. Операторы if-else выглядят для меня очень грязно, особенно при выполнении условного присваивания. Некоторые жалуются, что это выглядит грязно, но все еще возможно (особенно если вы используете Visual Studio или другую интеллектуальную среду IDE), чтобы сделать вещи легко читаемыми, и вы все равно должны комментировать все свои условия.