Я получил эту идею из этого вопроса на stackoverflow.com
Следующий шаблон является распространенным:
final x = 10;//whatever constant value
for(int i = 0; i < Math.floor(Math.sqrt(x)) + 1; i++) {
//...do something
}
Суть, которую я пытаюсь сделать, заключается в том, что условное утверждение является чем-то сложным и не меняется.
Это лучше объявить в разделе инициализации цикла, как таковой?
final x = 10;//whatever constant value
for(int i = 0, j = Math.floor(Math.sqrt(x)) + 1; i < j; i++) {
//...do something
}
Это более понятно?
Что делать, если условное выражение простое, такое как
final x = 10;//whatever constant value
for(int i = 0, j = n*n; i > j; j++) {
//...do something
}
x
велико по величине, Math.floor(Math.sqrt(x))+1
равно Math.floor(Math.sqrt(x))
. :-)
{ x=whatever; for (...) {...} }
или, еще лучше, подумайте, достаточно ли происходит, что это должна быть отдельная функция.