Estoy desarrollando en Java
y estoy usando IntelliJ
como mi IDE. Escribí un if
comunicado de la siguiente manera.
if( list1.size() >= 1 || list2.contains(itemX) ) {
//do something
}
IntelliJ
sugiere una transformación ( DeMorgan's Law
) y se transformó a:
if( ! ( list1.size() < 1 && !( list2.contains(itemX) ) ) ) {
//do something
}
Por lo tanto, aplica una teoría matemática discreta muy común en la simplificación de expresiones booleanas. Lo que me pregunto es cómo hace esto optimizar la nada?
||
operador de todos modos no se ejecuta todo el estado si la primera parte es en sí misma verdad, y sólo ejecuta el lado derecho sólo si la primera parte es falsa.
¿Es efectiva la condición transformado? ¿Cómo?
Ambos son exactamente las mismas declaraciones.
Estoy de acuerdo que el operador OR no evalúa la segunda parte si la primera parte es cierto, sin embargo, también es cierto que el operador no evalúa la segunda parte si la primera parte es FALSO.
De hecho, se tardará más tiempo y espacio para evaluar el ~ (~ A ~ && B), frente a A || B.
Espero que esto ayude :)