Хотя я понимаю, что каждый язык имеет свое собственное соглашение об отступах, меня не может не раздражать то, что я недавно обнаружил. Рассмотрим следующий код из руководства по PHP:
switch ($i) {
case "apple":
echo "i is apple";
break;
case "bar":
echo "i is bar";
break;
case "cake":
echo "i is cake";
break;
}
Обратите внимание, что каждый регистр имеет отступ от оператора switch. В этом есть смысл, поскольку код легче читать, а тело блока находится на одном уровне внутри него.
Однако, когда я тестирую эквивалентный оператор переключения JavaScript в JSLint:
switch (i) {
case "apple":
alert("i is apple");
break;
case "bar":
alert("i is bar");
break;
case "cake":
alert("i is cake");
break;
}
... он отображает ошибку, сообщающую мне, что вместо этого она должна выглядеть следующим образом:
switch (i) {
case "apple":
alert("i is apple");
break;
case "bar":
alert("i is bar");
break;
case "cake":
alert("i is cake");
break;
}
Это кажется нелогичным, поскольку каждый случай теперь встроен в сам блок переключателей. Я не могу представить себе причину, по которой это будет считаться лучше, не говоря уже о том, чтобы вызвать ошибку.
Является ли JSLint ошибочным или это просто следование соглашению? Если последнее верно, то почему бы по соглашению не использовать отступ для ясности?