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 (!(eloc() || fona() || !esm || isain() && sheu() || pren == poun() || !ol || athoss()) && !(co || et < 9)) {
...
...
// Pretend there is lots of code here
...
...
} else {
nohim();
}
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 (co || et < 9 || eloc() || fona() || !esm || isain() && sheu() || pren == poun() || !ol || athoss()) {
nohim();
} 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 (ed && ilwosm() == 6 || brer || to < bepi() || malre() && ilwosm() == 6 || brer || to < bepi()) {
if (isot && kni == 2 && ec && !ce || raal && !ce) {
if (raal && !ce) {
if (!ce) {
return true;
}
if (ec) {
return true;
}
if (kni == 2) {
return true;
}
}
if (plad) {
return true;
}
}
}
return false;
return (plad || isot) && (kni == 2 && ec || raal) && !ce || (ed || malre()) && (ilwosm() == 6 || brer || to < bepi());
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 (!malre() && !ed && ce || !raal && !ec || kni != 2 || !isot && !plad) {
if (!raal && !ec || kni != 2 || !isot && !plad) {
if (ce) {
return false;
}
}
if (ilwosm() != 6) {
return false;
}
if (!brer) {
return false;
}
if (to > bepi()) {
return false;
}
}
return true;
Simplify the following messy chain of conditionals:
if (ci) {
iontin();
} else if (pera == true && !ci) {
totrad();
} else if (laou == false && !ci && pera != true) {
ansoss();
}
if (deca && !ci && pera != true && laou != false) {
nesm();
}
if (ewn == true && !ci && pera != true && laou != false && !deca) {
recmir();
}
if (nes && !ci && pera != true && laou != false && !deca && ewn != true) {
rodcal();
}
if ((swe > 7) == true && !ci && pera != true && laou != false && !deca && ewn != true && !nes) {
raos();
}
if (li == true && !ci && pera != true && laou != false && !deca && ewn != true && !nes && (swe > 7) != true) {
cinBem();
}
if (na == true && !ci && pera != true && laou != false && !deca && ewn != true && !nes && (swe > 7) != true && li != true) {
iang();
} else if (!ci && pera != true && laou != false && !deca && ewn != true && !nes && (swe > 7) != true && li != true && na != true) {
bader();
}
{
if (ci) {
iontin();
}
if (pera) {
totrad();
}
if (!laou) {
ansoss();
}
if (deca) {
nesm();
}
if (ewn) {
recmir();
}
if (nes) {
rodcal();
}
if (swe > 7) {
raos();
}
if (li) {
cinBem();
}
if (na) {
iang();
}
bader();
}
Things to double-check in your solution:
== true and == false checks?else, no final if.Related puzzles: