Имам цикъл итерация, която съдържа много условия в тази форма
if (a[k]<=x){
if(al[k+1]==y){
if(a[k+2]>=x){
}
}
}
По-добро използване Използвайте условията в и в един, ако по отношение на производителността ??
if ((a[k]<=x) && (al[k+1]==y) && (a[k+2]>=x)){
}
Отговори:
2 за отговор № 1Както други отбелязват, целят четливост иНе прекалено предварително оптимизирайте кода. Измерете ефективността и ако идентифицирате този фрагмент от код, за да бъде пречка, започнете да мислите по-сериозно за проблема.
Също така, както е посочено в коментарите, представянето вероятно ще бъде идентично в тази ситуация. Възможно е да откриете различни характеристики за ефективност, ако сте поръчали предикатите. Нещо като:
if(B && A && C)
ако изчисляването на А е евтино и се връща 90% от грешното време и изчисляването на B е много скъпо, вместо това можете да напишете
if(A && B && C)
но отново, не стреляйте от бедрото! Целете се първо за четлив код, и ако измерванията Ви идентифицират затруднено представяне, разгледайте горното.
0 за отговор № 2
Всъщност, компилаторът е достатъчно "умен", за да компилира двата кода към една и съща байт-код java, но ако искаш моето мнение, първото е по-добро (защото четенето на много, ако, ако е досадно).
0 за отговор № 3
Ако имате много сложни условия във вашия цикъл, както казвате, помислете за преместването им в малки методи за по-добра четливост.
// inside loop
if (isValid(x, y, k)) {
}
// use a less generic method name in your code
private boolean isValid(int x, int y, int k) {
return a[k]<=x && al[k+1]==y && a[k+2]>=x;
}
В случай, че сега се притеснявате, че това ще доведе до лошо представяне, има голяма вероятност JVM да внедри тези методи.