Хотя я понимаю, что у каждого языка есть свое соглашение об отступах, я не могу не раздражаться тому, что недавно обнаружил.Рассмотрим этот код из руководства 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 ошибкой или это просто следование соглашению?Если последнее верно, почему бы соглашению не быть отступ для ясности?