Tengo esta idea de esta pregunta en stackoverflow.com
El siguiente patrón es común:
final x = 10;//whatever constant value
for(int i = 0; i < Math.floor(Math.sqrt(x)) + 1; i++) {
//...do something
}
El punto que estoy tratando de hacer es que la declaración condicional es algo complicado y no cambia.
¿Es mejor declararlo en la sección de inicialización del ciclo, como tal?
final x = 10;//whatever constant value
for(int i = 0, j = Math.floor(Math.sqrt(x)) + 1; i < j; i++) {
//...do something
}
¿Está esto más claro?
¿Qué pasa si la expresión condicional es simple como
final x = 10;//whatever constant value
for(int i = 0, j = n*n; i > j; j++) {
//...do something
}
x
es grande en magnitud, Math.floor(Math.sqrt(x))+1
es igual a Math.floor(Math.sqrt(x))
. :-)
{ x=whatever; for (...) {...} }
o, mejor aún, considere si hay suficiente actividad que necesita ser una función separada.