He leído en una reciente revisión de código que ambos ternary operator (condition ? foo : bar)
y los XOR operator ^
rara vez se usan en Java. ¿Es verdad?
En caso afirmativo, ¿es esto porque son menos legibles? o alguna otra razón.
java
operators
bitwise-operators
Kuldeep Jain
fuente
fuente
Respuestas:
El operador ternario se utiliza bien, especialmente para verificaciones nulas cortas / valores predeterminados:
Algunas personas consideran que esto no es tan legible como un if / else, pero esa no era la pregunta.
El operador XOR bitwise solo se usa en el procesamiento de bits. Si necesita un XOR bit a bit, entonces no hay forma de evitarlo.
El operador lógico XOR es realmente tan raro, que no lo vi en los últimos diez años en Java en casos válidos . Esto también se debe al hecho de que el XOR booleano "no escala" como
||
o&&
. Lo que quiero decir:Supongo que en el último caso, el codificador quería decir "solo uno debería ser cierto". Pero XOR es una bestia. El codificador consiguió la bestia y no lo que quería.
Esa sería una pregunta interesante para la entrevista: ¿Cuál es el resultado de la última
if
?fuente
!=
booleanos un par de veces, y el XOR lógico nunca se me pasó por la cabeza.Solía encontrar el operador ternario difícil de analizar, pero desde entonces descubrí que hay algunos lugares donde es muy útil. Estos no tienden a ser la lógica de la aplicación, sino el registro.
Por ejemplo:
Para mí, eso es mucho más ordenado que cualquiera
O
En resumen, se trata de dónde se está utilizando y para qué.
En cuanto a los bits, aún lucho con ellos, pero eso es porque estoy acostumbrado a trabajar en un alto nivel de abstracción, como han sugerido otros comentaristas. Si encuentro en algún lugar del código que alguien decidió usar eso para ser "eficiente", el tiempo perdido mientras lo descubro niega los beneficios.
fuente
foo.setParam( bool ? ClassA.method() : ClassB.method )
. Funciona, pero es un poco oloroso, en mi opinión.unless ( !bool ) {
. :)Esta es más una respuesta basada en una opinión, pero en mi caso:
De hecho, por alguna razón, encuentro que el operador ternario es menos legible que una construcción if-else.
En cuanto a XOR, probablemente la mayoría de los programas Java no tienen uso para tales manipulaciones bit a nivel bajo. En su mayor parte, parece ser solo una reliquia heredada de C.
fuente