Java: Convención Infinite Loop
infinite-loop conventions (5)
En definitiva, es tu elección. La siguiente referencia de Java usa el formato for (;;) : The for Statement .
Sin embargo, while(true) se usa más a menudo en bucles infinitos en mi experiencia.
¿Cuál es la convención para un ciclo infinito en Java? ¿Debo escribir while(true) o for(;;) ? Yo personalmente usaría while(true) porque uso while loops con menos frecuencia.
No hay diferencia en bytecode entre while(true) y for(;;) pero prefiero while(true) ya que es menos confuso (especialmente para alguien nuevo en Java).
Puede verificarlo con este ejemplo de código
void test1(){
for (;;){
System.out.println("hello");
}
}
void test2(){
while(true){
System.out.println("world");
}
}
Cuando use el comando javap -c ClassWithThoseMethods obtendrá
void test1();
Code:
0: getstatic #15 // Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #21 // String hello
5: invokevirtual #23 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: goto 0
void test2();
Code:
0: getstatic #15 // Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #31 // String world
5: invokevirtual #23 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: goto 0
que muestra la misma estructura (excepto "hello" vs cadenas "mundiales").
Prefiero while(true) , porque utilizo bucles while con menos frecuencia que para bucles. Para bucles tienen mejores usos y while(true) es mucho más limpio y fácil de leer que for(;;)
Tu decides. No creo que haya una convención para tal cosa. Puede usar while(true) o for(;;)
Yo diría que me encuentro con más frecuencia while(true) en los códigos fuente. for(;;) se utiliza con menos frecuencia y es más difícil de leer.
for(;;) es una mierda, es completamente poco intuitivo leer para novatos. Por favor use while(true) lugar.