I've recently been in a code syntax formatting debate and would like to get the opinion of the broader JavaScript community. I personally prefer this switch/case structure for complicated condition trees but other developers seem to dislike it. Below I will post my preferred switch/case structure and the if/else equivalents.
Rather than debate preferences, why is this switch/case code acceptable or unacceptable and the specific reasons? If the other alternatives are better, why?
// My preferred switch/case block
switch (true) {
case testA() : return 'A';
case testB() || testG() : return 'B';
case testC() : return 'C';
case testA() && !testB() : return 'ZETA';
case a === b && c !== d : return 'foo';
default : return 'bar';
}
// if-else alternate #1
if (testA()) {
return 'A';
}
if (testB() || testG()) {
return 'B';
}
if (testC()) {
return 'C';
}
if (testA() && !testB()) {
return 'ZETA';
}
if (a === b && c !== d) {
return 'foo';
}
return 'bar';
// if-else alternate #2
if (testA()) return 'A';
if (testB() || testG()) return 'B';
if (testC()) return 'C';
if (testA() && !testB()) return 'ZETA';
if (a === b && c !== d) return 'foo';
return 'bar';