Подтвердить что ты не робот

Верно ли, что я должен использовать стиль K & R при написании javascript?

Я не понимал этого до недавнего времени, но я использую стиль Allman при написании кода javascript.

Согласно http://encosia.com/in-javascript-curly-brace-placement-matters-an-example/, я должен использовать стиль K & R. Это связано с тем, что в некоторых ситуациях размещение фигурной скобки на следующей строке может вызвать проблемы. Проблема для меня в том, что я полюбил стиль Allman и не стал бы меняться.

Итак, мой вопрос (ы)

  • Верно ли, что стиль allman может вызвать ошибки из-за размещение фигурных скобок в javascript? Как насчет jquery?

  • Есть ли трюк, который позволил бы мне использовать стиль Allman без проблем из-за фигурных скобок?

  • Есть ли другие проблемы, связанные с использованием этих стилей?

4b9b3361

Ответ 1

Верно ли, что стиль allman может вызвать ошибки из-за размещения фигурных скобок в javascript?

Да, это так. Как поясняет ваша ссылка, инструкции return, за которыми следует новая строка, путают парсер, когда он пытается вставить точку с запятой. Однако это поведение не ограничивается возвратом литералов объекта. Следующая функция:

function foo()
{
    return
        "bar";
}

Также вернет undefined.

Как насчет jquery?

Ситуация остается той же, независимо от того, включен ли jQuery.

Есть ли какой-либо трюк, который позволил бы мне использовать стиль Allman без проблемы из-за фигурных скобок?

Да, не используйте стиль Allman с объектными литералами. Предположим, вы хотите назначить литерал объекта переменной. Вы действительно будете писать:

var foo =
{
    bar: "quux"
};

Или вы пойдете за:

var foo = {
    bar: "quux"
};

IMHO второй фрагмент более читабельен, чем первый. Вы можете продолжить использовать стиль Allman с фигурными скобками внутри for, if, while, function и т.д., Но сделайте исключение для литералов объектов.

Есть ли другие проблемы, связанные с использованием этих стилей?

return - довольно частный случай, поскольку он действителен с аргументом или без него. Когда в одной строке отображается одиночный оператор return, синтаксический анализатор не может определить, следует ли ему добавить точку с запятой, чтобы сделать однострочный оператор действительным, или перейти к следующим строкам и надеяться на лучшее.

По этой причине, я думаю, что это поведение становится проблемой только с return и, возможно, throw, а не с другими операторами.

Ответ 2

Имейте в виду спецификацию ECMAScript относительно автоматической вставки точки с запятой:

Некоторые операторы ECMAScript (пустой оператор, оператор переменной, оператор выражения, оператор do-while, оператор continue, break, оператор return и throw) должны быть завершены с точкой с запятой. Такие точки с запятой могут всегда отображаться явно в исходный текст. Однако для удобства такие точки с запятой могут быть опущены из исходного текста в определенных ситуациях. Эти ситуации описывая, говоря, что точки с запятой автоматически вставляются в поток токенов исходного кода в этих ситуациях.

Я смеюсь над предложением выше, что это "удобно"...

Пока вы технически могли бы продолжать использовать форматирование Allman в случаях, не указанных выше, я бы проповедовал последовательность. Лично я поклонник Google JS styleguide - разделы, относящиеся к вашему вопросу, относятся к форматирование кода и semicolons. Приведенные там примеры заслуживают проверки.