Qual a vantagem que o operador ternário leva em cima do if/else ?
Atenciosamente,
Fernando.
Qual a vantagem que o operador ternário leva em cima do if/else ?
Atenciosamente,
Fernando.
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
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
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:
[code]
Color cor;
if (destaque) {
cor = Color.RED;
} else {
cor = COLOR.BLUE;
}
label.setCor(cor);[/code]
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?
Oi,
Essa é uma grande diferença. Sempre que possível o utilizo, mesmo quando existe + de uma comparação.
Tchauzin!
[quote=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:
[code]
Color cor;
if (destaque) {
cor = Color.RED;
} else {
cor = COLOR.BLUE;
}
label.setCor(cor);[/code]
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?[/quote]
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
O Visual Basic 6 não tem, mas eles acoxambraram um com a função iif.
[code]
dim nome as String
nome = iif(nomeUsuario = null, “Anônimo”, nomeUsuario);[/code]
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.
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.
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.
Fico grato pela colaboração de todas as respostas.
[quote]No pascal e no Delphi o operador realmente não existe.
[/quote]
Apenas para conhecimento, o delphi tem o IfThen
nome := IfThen(nomeUsuario = '', 'Anônimo', nomeUsuario);
Att