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.