Editar Não se trata de saber se o operador ternário é prejudicial . É sobre se existe ou não um consenso sobre se deve ou não ser usado fora das declarações de atribuição. /Editar
Baseado em um valor booleano, desejo chamar uma de duas funções diferentes (sem valor de retorno). Eu escrevi este bit de javascript:
(condition) ? doThis(arg) : doThat(arg)
Acho que parece mais limpo do que escrever uma declaração if-else:
if(condition) {
doThis(arg);
}
else {
doThat(arg);
}
Meus colegas acreditam firmemente que declarações ternárias devem ser usadas apenas em declarações de atribuição. Não consigo encontrar guias de estilo que discutam isso, provavelmente porque linguagens como Java e C # não permitem isso (seus compiladores exigem que operadores ternários retornem um valor). Isso deve ser considerado um mau uso da declaração ternária? Por quê?
fonte
Respostas:
De um modo geral, o operador condicional pretende fazer uma declaração if com um valor .
w = x ? y : z
. Portanto, se você o estiver usando para efeitos colaterais, é contra-intuitivo. Válido, mas contra-intuitivo; e lembre-se de que você está escrevendo um código para seus colegas de equipe lerem.fonte
Alguns casos, que não são atribuições, nos quais considero úteis operadores ternários são:
Em argumentos de função: na minha opinião
é menos propenso a erros do que
Quando você deseja chamar uma função ou outra com argumentos idênticos: novamente eu acho
menos propenso a erros do que
A meu ver, o principal em cada caso é que? forma tem menos repetição. A repetição abre a possibilidade de mudar uma instância e esquecer de mudar a outra.
fonte