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 (adir && (tred == estes() || mioIlno() || rarow()) || te > en && sa != 0 && !opem || hics() || !smiThahoo() && !(crir || irfoss())) {
...
...
// Pretend there is lots of code here
...
...
} else {
rufruc();
}
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 ((crir || irfoss() || smiThahoo()) && !hics() && (opem || sa == 0 || te < en) && (!rarow() && !mioIlno() && tred != estes() || !adir)) {
rufruc();
} 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 (ongEvar() && rire() && spiFukan() && !pa && !jex && atthor() == 5 && trong() == in && ra == ete || reac() && ra == ete || ca && spiFukan() && !pa && !jex && atthor() == 5 && trong() == in && ra == ete || reac() && ra == ete || rescos() && spiFukan() && !pa && !jex && atthor() == 5 && trong() == in && ra == ete || reac() && ra == ete) {
if (ca && spiFukan() && !pa && !jex && atthor() == 5 && trong() == in && ra == ete || reac() && ra == ete || rescos() && spiFukan() && !pa && !jex && atthor() == 5 && trong() == in && ra == ete || reac() && ra == ete) {
if (reac() && ra == ete) {
if (ra == ete) {
return true;
}
if (trong() == in) {
return true;
}
}
if (atthor() == 5) {
return true;
}
if (!jex) {
return true;
}
if (!pa) {
return true;
}
if (spiFukan()) {
return true;
}
if (rire()) {
return true;
}
}
if (!e) {
return true;
}
}
return false;
return (!e || ongEvar()) && (rire() || ca || rescos()) && spiFukan() && !pa && !jex && atthor() == 5 && (trong() == in || reac()) && ra == ete;
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 (!reac() && trong() != in || atthor() != 5 || jex || pa || !spiFukan() || !rescos() && !ca && !rire() || !ongEvar() && e) {
if (ra != ete) {
return false;
}
}
return true;
Simplify the following messy chain of conditionals:
if (!otin) {
sleEntri();
}
if (udel == true && otin) {
bliTwus();
} else if (it && otin && udel != true) {
ciol();
} else if (ea == true && otin && udel != true && !it) {
bepPiass();
}
if (a == false && otin && udel != true && !it && ea != true) {
cosil();
} else if (sood == true && otin && udel != true && !it && ea != true && a != false) {
prou();
} else if (edmi == false && otin && udel != true && !it && ea != true && a != false && sood != true) {
wupt();
}
if (ci != ou && otin && udel != true && !it && ea != true && a != false && sood != true && edmi != false) {
heou();
}
if (es == true && otin && udel != true && !it && ea != true && a != false && sood != true && edmi != false && ci == ou) {
lalDolda();
}
if (da == true && otin && udel != true && !it && ea != true && a != false && sood != true && edmi != false && ci == ou && es != true) {
ciand();
}
if (cet && otin && udel != true && !it && ea != true && a != false && sood != true && edmi != false && ci == ou && es != true && da != true) {
saock();
}
{
if (!otin) {
sleEntri();
}
if (udel) {
bliTwus();
}
if (it) {
ciol();
}
if (ea) {
bepPiass();
}
if (!a) {
cosil();
}
if (sood) {
prou();
}
if (!edmi) {
wupt();
}
if (ci != ou) {
heou();
}
if (es) {
lalDolda();
}
if (da) {
ciand();
}
if (cet) {
saock();
}
}
Things to double-check in your solution:
== true and == false checks?else if, not just else.Related puzzles: