Eu recebi essa ideia dessa pergunta no stackoverflow.com
O seguinte padrão é comum:
final x = 10;//whatever constant value
for(int i = 0; i < Math.floor(Math.sqrt(x)) + 1; i++) {
//...do something
}
O que estou tentando enfatizar é que a declaração condicional é algo complicado e não muda.
É melhor declará-lo na seção de inicialização do loop, como tal?
final x = 10;//whatever constant value
for(int i = 0, j = Math.floor(Math.sqrt(x)) + 1; i < j; i++) {
//...do something
}
Isso é mais claro?
E se a expressão condicional for simples, como
final x = 10;//whatever constant value
for(int i = 0, j = n*n; i > j; j++) {
//...do something
}
x
é grande em magnitude, Math.floor(Math.sqrt(x))+1
é igual a Math.floor(Math.sqrt(x))
. :-)
{ x=whatever; for (...) {...} }
ou, melhor ainda, considere se há o suficiente acontecendo para que ele precise ser uma função separada.