Adicto al operador ternario
Admito que soy uno de esos programadores que a veces confunde claridad con brevedad. Admito que mi idea de código bonito, en ocasiones, lleva hasta el extremo el objetivo de reducir el número de líneas de código, incluso en perjuicio de la claridad. Y admito que esto no es bueno (ni bonito).
El operador ternario es ese azucar sintáctico creado por Kernighan y Ritchie, también llamado if en linea, y que permite abreviar expresiones como esta:
int a; if (condicion) { a = valor1; } else { a = valor2; }
En una sola línea:
int a = condicion ? valor1 : valor2;
Su uso en casos sencillos como el del ejemplo es absolutamente recomendable. El problema viene cuando lo usas siempre que puedes, con expresiones complejas e incluso anidando unos if en línea dentro de otros. (Mmm… sí, eso lo he hecho yo)
El primer paso para superar una adicción es admitirla. Con lo que, por si no ha quedado claro: “Hola, me llamo Luismi y soy adicto al operador ternario”
Lo siguiente que haré es tratar de seguir las recomendaciones de Jamis Buck (un tipo que desarrolla el core de Ruby on Rails y que hace una labor de divulgación extraordinaria tanto en su blog como en The Rails Way) que en un reciente post propone una serie de recomendaciones para un uso comedido del operador ternario. Básicamente identifica 3 malos olores:
- Si necesitas utilizar varias líneas para hacer legible tu expresión, seguramente estás abusando del operador
- Si necesitas anidar varios if en línea, seguramente estás abusando del operador
- Si necesitas utilizar paréntesis en alguno de los miembros de la expresión, seguramente estás abusando del operador
Lo cual, dicho en Ruby:
(@varias_lineas or @anidamiento or @parentesis) ? :estas_abusando_del_operador_ternario : :uso_correcto_del_operador_ternario
5 Responses to “Adicto al operador ternario”
Leave a Reply
Search
About Putting it together
Blog acerca del desarrollo de software en la postmodernidad y la complejidad de mantener las cosas simples
Escrito por Luismi Cavallé




Totalmente de acuerdo con que muchas veces intentamos abusar y que por ello perdemos legibilidad, quizá no en el momento, sino más tarde, cuando volvamos a leer el código.
Otra cosa es que estés haciendo un reto del Codegolf.
Absolutamente genial el resumen en ruby :P
A mi me pasa absolutamente lo contrario, busco demasiado la claridad en el código. Y a veces que podria usar otras expresiones o maneras de hacer, lo hago “a saco”, de la manera que me parece más legible.
Pero bueno, desde que empecé con rails, busco corregirme :P aunque no es sencillo.
Acabo de descubrir tu blog gracias al blog de tractis, y realmente lo poco k he leido de momento, muy interesante. Te voy a tener que agregar, otro pesado pa leer cada dia. Que ajco!! jaja
Es buena cosa la de buscar la legibilidad, muy buena. Y la brevedad, a menudo contribuye mucho a la legibilidad, pero no siempre!!
Muchas gracias, manu_drac, por tu comentario, espero no resultarte mu’ pesao ;)
Y como puedo usar este operador sin la parte del else…
(condicion) ? si
podrias explicar eso
En ruby yo usaría directamente el if:
resultado = valor if condicion