Optimización de código

En la optimización de código, una de las mejores prácticas es salir de un bucle tan pronto como sea posible para mejorar la eficiencia y reducir el número de iteraciones innecesarias. Esto se conoce como "early exit" o "short-circuiting", y puede aplicarse de varias maneras según el contexto.

🔥 ¿Por qué salir del bucle temprano?

  • Reduce el número de iteraciones innecesarias, ahorrando CPU y memoria.
  • Evita operaciones costosas cuando el resultado ya está determinado.
  • Mejora la legibilidad y claridad del código.

🚫 Ejemplo Malo (No salir del bucle)

1import java.util.Arrays;
2import java.util.List;
3
4public class Main {
5    public static void main(String[] args) {
6        List<Integer> numbers = Arrays.asList(3, 7, 2, 8, 5, 10, 4);
7        int target = 8;
8        boolean found = false;
9
10        for (int num : numbers) {
11            if (num == target) {
12                System.out.println("Número encontrado");
13                found = true;
14            }
15        }
16
17        if (!found) {
18            System.out.println("Número no encontrado");
19        }
20    }
21}

Problemas:

  • Sigue iterando innecesariamente después de encontrar el número.
  • Ineficiencia en listas grandes porque revisa todos los elementos.
  • El código no se detiene tan pronto como encuentra el resultado.

✅ *Ejemplo Optimizado (Salir del bucle con break)

1import java.util.Arrays;
2import java.util.List;
3
4public class Main {
5    public static void main(String[] args) {
6        List<Integer> numbers = Arrays.asList(3, 7, 2, 8, 5, 10, 4);
7        int target = 8;
8
9        for (int num : numbers) {
10            if (num == target) {
11                System.out.println("Número encontrado");
12                break; // Sale del bucle al encontrar el número
13            }
14        }
15    }
16}

Versión más mejorada (Uso de contains o in)

1import java.util.Arrays;
2import java.util.List;
3
4public class Main {
5    public static void main(String[] args) {
6        List<Integer> numbers = Arrays.asList(3, 7, 2, 8, 5, 10, 4);
7        int target = 8;
8
9        if (numbers.contains(target)) {
10            System.out.println("Número encontrado");
11        } else {
12            System.out.println("Número no encontrado");
13        }
14    }
15}