2009-03-29 30 views

Respuesta

4

Es algo así como el bucle for. Tiene sentido para lo que está hecho, pero cuando tratas de meter más cosas en él, se vuelve ilegible.

0

¿De qué operador ternario está hablando?

Un operador ternario es cualquier operador que toma tres argumentos.

Si hablamos de? : operador, esto se llama operador condicional. Ya no puedo vivir sin eso, personalmente. Las declaraciones If-else me parecen muy complicadas, especialmente cuando se realiza una asignación condicional. Algunos se quejan de que parece desordenado, pero aún es posible (especialmente si se usa Visual Studio u otro IDE de formato inteligente) para que todo sea fácil de leer, y de todos modos debería comentar todos sus condicionales.

+3

Se suele llamar el operador ternario porque es el único operador que toma tres argumentos. – Samuel

+0

estoy hablando? : operador (siempre lo llamé operador ternario: ¿estoy equivocado?) –

+2

+1 para mayor precisión. Sí, se llama el operador condicional. Resulta ser * un * operador ternario, pero eso solo describe la cantidad de operandos, no su propósito/comportamiento. Si el equipo de C# presenta a otro operador ternario, la gente realmente tendrá que aprender el nombre correcto ... –

3

El operador condicional ternario definitivamente puede ser usado en exceso, y algunos lo encuentran bastante ilegible. Sin embargo, creo que puede ser muy claro en la mayoría de las situaciones que se espera una expresión booleana, siempre que su intención sea clara. Si el intento es no claro, lo mejor es usar una variable temporal con un nombre claro cuyo valor se asigna mediante un enunciado if, o para usar una función con un buen nombre que devuelva el valor esperado.

8

Bueno para etiquetas cortas en los idiomas de plantillas como PHP, por ejemplo:

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

Bueno para interruptores en Javascript/jQuery:

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

Bueno para asignación, especialmente cuando un nombre de variable en particular puede tomar diferentes tipos:

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

En aras de la legibilidad, solo uso un ternario si cabe en una línea de 80 char.

Cuestiones relacionadas