J'ai eu cette idée de cette question sur stackoverflow.com
Le modèle suivant est courant:
final x = 10;//whatever constant value
for(int i = 0; i < Math.floor(Math.sqrt(x)) + 1; i++) {
//...do something
}
Le point que j'essaie de faire est que l'énoncé conditionnel est quelque chose de compliqué et ne change pas.
Est-il préférable de le déclarer dans la section d'initialisation de la boucle, en tant que tel?
final x = 10;//whatever constant value
for(int i = 0, j = Math.floor(Math.sqrt(x)) + 1; i < j; i++) {
//...do something
}
Est-ce plus clair?
Que faire si l'expression conditionnelle est simple, comme
final x = 10;//whatever constant value
for(int i = 0, j = n*n; i > j; j++) {
//...do something
}
x
est de grande ampleur, Math.floor(Math.sqrt(x))+1
est égal à Math.floor(Math.sqrt(x))
. :-)
{ x=whatever; for (...) {...} }
ou, mieux encore, demandez-vous s'il y a suffisamment de choses pour que ce soit une fonction distincte.