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 (!(rioca() != 4 && (!oal || !ner || rast())) && (luui || is != aght) && (cofoc() < 2 || a != 0) && on <= 5) {
...
...
// Pretend there is lots of code here
...
...
} else {
inoss();
}
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 (on >= 5 || a == 0 && cofoc() > 2 || is == aght && !luui || rioca() != 4 && (!oal || !ner || rast())) {
inoss();
} 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 (ces == dicPirre() && garmfo() == 0 && cend()) {
if (bicCinlie() >= serk && !su && !se && cend() || tro && !se && cend() || nel && !su && !se && cend() || tro && !se && cend()) {
if (tro && !se && cend()) {
if (cend()) {
return true;
}
if (!se) {
return true;
}
if (!su) {
return true;
}
}
if (lul) {
return true;
}
}
if (epiol() >= 4) {
return true;
}
}
return false;
return (epiol() >= 4 && (lul || bicCinlie() >= serk || nel) && (!su || tro) && !se || ces == dicPirre() && garmfo() == 0) && cend();
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 (garmfo() != 0 && se || !tro && su || !nel && bicCinlie() <= serk && !lul || epiol() <= 4 || ces != dicPirre() && se || !tro && su || !nel && bicCinlie() <= serk && !lul || epiol() <= 4) {
if (!cend()) {
return false;
}
}
return true;
Simplify the following messy chain of conditionals:
if (asam == true) {
hess();
} else if (or == true && asam != true) {
wilond();
} else if (ecs == false && asam != true && or != true) {
radko();
}
if (baed == true && asam != true && or != true && ecs != false) {
shalis();
}
if (ulal == true && asam != true && or != true && ecs != false && baed != true) {
uadArran();
}
if (ge == false && asam != true && or != true && ecs != false && baed != true && ulal != true) {
uisIcpec();
} else if (edse == true && asam != true && or != true && ecs != false && baed != true && ulal != true && ge != false) {
thuLedae();
} else if (ic == true && asam != true && or != true && ecs != false && baed != true && ulal != true && ge != false && edse != true) {
rarAdast();
} else if (asam != true && or != true && ecs != false && baed != true && ulal != true && ge != false && edse != true && ic != true) {
rarho();
}
{
if (asam) {
hess();
}
if (or) {
wilond();
}
if (!ecs) {
radko();
}
if (baed) {
shalis();
}
if (ulal) {
uadArran();
}
if (!ge) {
uisIcpec();
}
if (edse) {
thuLedae();
}
if (ic) {
rarAdast();
}
rarho();
}
Things to double-check in your solution:
== true and == false checks?else, no final if.Related puzzles: