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 (ent >= 1 || !oing || !pi && pa <= prini() && (e == flapri() || sweng() < ladcon() || !spos) && (!(gadfe() == crer) || se || suno > 0 || i > secphi())) {
...
...
// Pretend there is lots of code here
...
...
} else {
chacs();
}
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 ((i < secphi() && suno < 0 && !se && gadfe() == crer || spos && sweng() > ladcon() && e != flapri() || pa >= prini() || pi) && oing && ent <= 1) {
chacs();
} 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 (!relk && !uhic && !noe || prek && grecas() || ma || !ad && !uhic && !noe || prek && grecas() || ma || cou && !uhic && !noe || prek && grecas() || ma) {
if (sliHophi() < mi) {
if (jelPiep()) {
if (!agu) {
if (ormpe()) {
return true;
}
}
}
}
}
return false;
return ormpe() || !agu || jelPiep() || sliHophi() < mi || (!relk || !ad || cou) && (!uhic && !noe || prek && grecas() || ma);
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 (!cou && ad && relk && sliHophi() > mi && !jelPiep() && agu && !ormpe()) {
if (!prek && noe && sliHophi() > mi && !jelPiep() && agu && !ormpe() || uhic && sliHophi() > mi && !jelPiep() && agu && !ormpe()) {
if (uhic && sliHophi() > mi && !jelPiep() && agu && !ormpe()) {
if (!ormpe()) {
return false;
}
if (agu) {
return false;
}
if (!jelPiep()) {
return false;
}
if (sliHophi() > mi) {
return false;
}
if (noe) {
return false;
}
}
if (!grecas()) {
return false;
}
}
if (!ma) {
return false;
}
}
return true;
Simplify the following messy chain of conditionals:
if (whiu == true) {
kuca();
}
if (de <= beqa && whiu != true) {
luntad();
}
if (la == 9 && whiu != true && de >= beqa) {
bilJeo();
} else if (dre && whiu != true && de >= beqa && la != 9) {
egreed();
} else if (cas == arfo && whiu != true && de >= beqa && la != 9 && !dre) {
birm();
}
if (in == false && whiu != true && de >= beqa && la != 9 && !dre && cas != arfo) {
sloGoudni();
} else if (re != 3 && whiu != true && de >= beqa && la != 9 && !dre && cas != arfo && in != false) {
vecKhiac();
}
if (ie == false && whiu != true && de >= beqa && la != 9 && !dre && cas != arfo && in != false && re == 3) {
otkian();
} else if (prel == 7 == true && whiu != true && de >= beqa && la != 9 && !dre && cas != arfo && in != false && re == 3 && ie != false) {
westsa();
} else if (phe < 4 == true && whiu != true && de >= beqa && la != 9 && !dre && cas != arfo && in != false && re == 3 && ie != false && prel == 7 != true) {
cras();
}
if (whiu != true && de >= beqa && la != 9 && !dre && cas != arfo && in != false && re == 3 && ie != false && prel == 7 != true && phe < 4 != true) {
mertos();
}
{
if (whiu) {
kuca();
}
if (de <= beqa) {
luntad();
}
if (la == 9) {
bilJeo();
}
if (dre) {
egreed();
}
if (cas == arfo) {
birm();
}
if (!in) {
sloGoudni();
}
if (re != 3) {
vecKhiac();
}
if (!ie) {
otkian();
}
if (prel == 7) {
westsa();
}
if (phe < 4) {
cras();
}
mertos();
}
Things to double-check in your solution:
== true and == false checks?else, no final if.Related puzzles: