Operador Ternario ou if/else [RESOLVIDO]

10 respostas
S

Qual a vantagem que o operador ternário leva em cima do if/else ?

Atenciosamente,
Fernando.

10 Respostas

S

Sabes eu nem uso o operador ternario, primeiro porque não acho que me da vantagem visto que em algumas linguagens não se usa, e eu como mexo com varias linguagens prefiro apenas usar aquilo que na maioria funciona, e segundo porque não gosto de usar, e acho que põe o código menos claro ( menos claro porque alguns programadores não conhecem este operador, e porque expressões complexas com o operador ternario acho que fica mais dificil de analisar).

Mas como em tudo eu me preocupo em saber quando e porque devo usar, e ai vai.
Devemos usar o operador ternario sempre que tivemos uma expressão condicional muito simples e acharmos que iremos poupar digitação de código.

Possa ser que eu estou errado, mas não acho um codigo fica bonito se tiver por ai muitos operadores ternarios

Felagund

o Sulito está certo qto a questão do excesso de operadores ternarios dificulta a legibilidade, porém if else if else tbm não fica la muito legivel não.

Eu gosto de usar o operador ternario tendo na maximo 3 avaliações, mas que isso, adapto para usar OO ou uso um Switch ou if mesmo :stuck_out_tongue:

ViniGodoy

Eu só uso o ternário quando existe uma única comparação. Nesse caso, ele traz mais legibilidade, e muitas vezes evita a criação de uma variável temporária. Fora que sua sintaxe é bem mais compacta.

Só lembrando, o if...else são comandos (statements) enquanto o operador ternário é um operador. Ou seja, ele retorna valor, enquanto o if e o else não. É possível usar o operador ternário diretamente numa chamada de função, por exemplo, enquanto o if...else teria que duplicar a chamada.

Exemplo
label.setCor(destaque ? Color.RED : Color.BLUE);
Para fazer isso com if, ou duplica-se a chamada:
if (destaque) {
   label.setCor(Color.RED);
} else {
   label.setCor(Color.BLUE);
}
Ou cria-se uma variável temporária:
Color cor;

if (destaque) {
   cor = Color.RED;
} else {
   cor = COLOR.BLUE;
}
label.setCor(cor);

Em ambos os casos, existe muito mais código e a legibilidade fica bem pior. Especialmente se você tiver mais comparações desse tipo.

Sulito, que linguagem você usa que não tem o operador ternário?

lina

Oi,

Essa é uma grande diferença. Sempre que possível o utilizo, mesmo quando existe + de uma comparação.

Tchauzin!

S
ViniGodoy:
Eu só uso o ternário quando existe uma única comparação. Nesse caso, ele traz mais legibilidade, e muitas vezes evita a criação de uma variável temporária. Fora que sua sintaxe é bem mais compacta.

Só lembrando, o if...else são comandos (statements) enquanto o operador ternário é um operador. Ou seja, ele retorna valor, enquanto o if e o else não. É possível usar o operador ternário diretamente numa chamada de função, por exemplo, enquanto o if...else teria que duplicar a chamada.

Exemplo
label.setCor(destaque ? Color.RED : Color.BLUE);
Para fazer isso com if, ou duplica-se a chamada:
if (destaque) {
   label.setCor(Color.RED);
} else {
   label.setCor(Color.BLUE);
}
Ou cria-se uma variável temporária:
Color cor;

if (destaque) {
   cor = Color.RED;
} else {
   cor = COLOR.BLUE;
}
label.setCor(cor);

Em ambos os casos, existe muito mais código e a legibilidade fica bem pior. Especialmente se você tiver mais comparações desse tipo.

Sulito, que linguagem você usa que não tem o operador ternário?

eu não tenho bem certeza porque na verdade nunca me interessei em investigar o operador ternario noutras linguagens, mas o Visual basic, o pascal, acho que não tem

ViniGodoy
O Visual Basic 6 não tem, mas eles acoxambraram um com a função iif.
dim nome as String

nome = iif(nomeUsuario = null, "Anônimo", nomeUsuario);
O problema é que, como se trata de uma função, ambos os lados devem ser avaliados, mesmo que só um deles seja usado. No VB 9 em diante, existe o operador if():
nome = if(usuario = null, "Anônimo", usuario.Nome);

No pascal e no Delphi o operador realmente não existe.

romarcio

Eu já não costumo usar o ternário. Quando fiz um curso de java J2SE eu aprendi a usa-lo, mas geralmente esqueço que ele existe, hehe.

Uma vez fui dar uma manutenção em um aplicação de outro programador e estava tomada por operador ternário, dai tive que procurar algo sobre o assunto, pq não lembrava mais como funcionava.

Mas até hj eu não utilizo ele em meus códigos, talvez por falta de costume mesmo. Muito boa a explicação do ViniGodoy.

Tchello

Adoro operador ternário, uso sempre que possível mas sem exagerar, assim como o mesmo vale pra if…else clássico.

Na minha opinião o operador ternário tornou meu código muito mais legível e enxuto e se o programador que for dar manutenção não entender vai ter que estudar, afinal isso é um tanto básico… e mesmo que a pessoa não o conheça é suficientemente simples pra que ela aprenda rapidinho e sem galhos.

Abraços.

S

Fico grato pela colaboração de todas as respostas.

A

No pascal e no Delphi o operador realmente não existe.

Apenas para conhecimento, o delphi tem o IfThen

nome := IfThen(nomeUsuario = '', 'Anônimo', nomeUsuario);

Att

Criado 1 de fevereiro de 2010
Ultima resposta 2 de fev. de 2010
Respostas 10
Participantes 8