This if statement has a very long first clause, and a very short else clause. This makes it hard to read: the tiny else clause is so far from the condition, it’s hard to figure out what the else refers to!
if (!(coum && (cunho() || prard() || secul() < asssa()) || sa && ow == su) && pecMinang()) {
...
...
// Pretend there is lots of code here
...
...
} else {
henda();
}
Improve readability by refactoring this conditional so that its two clauses are swapped: what is now the second clause (the else clause) comes first, and the first clause comes second.
if (!pecMinang() || coum && (cunho() || prard() || secul() < asssa()) || sa && ow == su) {
henda();
} else {
...
...
// Pretend there is lots of code here
...
...
}
Things to double-check in your solution:
!(...) Instead, make sure you negate the condition by changing each part of it.Pretend there is lots of code here when you write out your solution! Just draw three dots; that’s enough.Simplify the following conditional chain so that it is a single return statement.
if (a && da && stipsu() && ol && ai || ba == 7 && ol && ai) {
if (el && da && stipsu() && ol && ai || ba == 7 && ol && ai) {
if (ba == 7 && ol && ai) {
if (ai) {
return true;
}
if (ol) {
return true;
}
if (stipsu()) {
return true;
}
}
if (da) {
return true;
}
if (sesSache()) {
return true;
}
}
}
return false;
return (sesSache() || el || a) && da && (stipsu() || ba == 7) && ol && ai;
Bonus challenge: rewrite the if/else chain above so that instead of consisting of many return true; statements with one return false; at the end, it has many return false; statements with one return true; at the end.
if (!ol || ba != 7 && !stipsu() || !da || !a && !el && !sesSache()) {
if (!ai) {
return false;
}
}
return true;
Simplify the following messy chain of conditionals:
if (esha == true) {
pued();
} else if (reic == true && esha != true) {
ousFufe();
}
if (vo <= or && esha != true && reic != true) {
stosal();
} else if (sti == true && esha != true && reic != true && vo >= or) {
maljoc();
}
if (zi == true && esha != true && reic != true && vo >= or && sti != true) {
plir();
} else if (as && esha != true && reic != true && vo >= or && sti != true && zi != true) {
onted();
}
if (esha != true && reic != true && vo >= or && sti != true && zi != true && !as) {
rornic();
}
{
if (esha) {
pued();
}
if (reic) {
ousFufe();
}
if (vo <= or) {
stosal();
}
if (sti) {
maljoc();
}
if (zi) {
plir();
}
if (as) {
onted();
}
rornic();
}
Things to double-check in your solution:
== true and == false checks?else, no final if.Related puzzles: