JavaScript брекеты на новой строке или нет?
На работе мы ставим брекеты на следующую линию, а дома я делаю наоборот. Какой из них вы предпочитаете? (K&R против OTBS)
function something() {
// ...
}
function something()
{
// ...
}
Многие библиотеки JavaScript, похоже, используют OTBS (один настоящий стиль скобок). Я хотел бы следовать за ними для согласованности среди других проектов JavaScript, но разве стиль K & R не выглядит более читабельным?
Примечание: мы знаем проблему с возвратом и скобками в JavaScript, это всегда будет исключением. Однако это только один случай.
9 ответов
Это священная война, на которую вы никогда не получите полезного ответа! Просто придерживайтесь того, что используют все остальные в проекте, и не спорьте!
Для чего это стоит, я K&Rite. Я считаю, что OTBS помещает много визуального пространства между открывающей структурой и следующим утверждением, когда эти две строки часто тесно связаны, поэтому их лучше представить вместе, без промежуточной почти пустой строки. Мне нравится сохранять свои пустые строки зарезервированными для разделения блоков связанных операторов.
В стиле кодирования, в котором все равно много пробелов, это может быть относительно неважно. Но лично я ценю краткость, поэтому я могу держать больше программы на экране.
Я не куплюсь на то, что наличие открытой скобки в столбце, отличном от закрывающей, является проблемой. Все еще легко увидеть форму блока только по отступам. Если вы не используете висячие отступы. Не делай этого. Но это еще одна священная война.
Дуглас Крокфорд дает повод выбрать стиль K&R 1:
Я всегда использую стиль K&R, ставя
{
в конце строки, а не спереди, потому что это позволяет избежать ужасной ошибки дизайна в JavaScriptreturn
заявление.
Ошибка, на которую он ссылается - это то, как JavaScript обрабатывает return
Заявление по-разному в следующих двух сценариях:
return {
'status': 'ok'
};
... а также:
return
{
'status': 'ok'
};
Первый вернет объект с status
собственности, а последний вернется undefined
из-за вставки точки с запятой.
1 Дуглас Крокфорд: JavaScript: хорошие детали: стиль (стр. 96) - ISBN: 978-0596517748.
Я следую соглашению по кодированию JavaScript Дугласа Крокфорда, которое было вдохновлено рекомендациями Sun по стилю Java.
Вот ссылка на него: http://javascript.crockford.com/code.html
На мой взгляд, это зависит от того, кто еще будет работать с вашим кодом. Если вы работаете в команде C# и выполняете много обязанностей, поставьте ее на новую строчку и избегайте неизбежных споров, которые могли бы последовать. Если вы работаете с большим количеством PHP (или более старых JS-программистов), поместите его в первую строку по той же причине.
Но если вы ищете что-то более авторитетное, Дуглас Крокфорд говорит, что открывающая скобка всегда должна быть в верхней строке. Его рассуждение, если я правильно помню, заключается в том, что оно согласуется с остальной частью языка. В основном, потому что это допустимый, но (возможно) неверный код:
function myFunc()
{
return
{
ok: true
};
}
... вам следует избегать использования открытых скобок на новой линии. Зачем? Потому что стиль программирования не должен приводить к синтаксической неоднозначности.
Приведенный выше пример кода действителен, поскольку он полностью синтаксически корректен, и при его написании не будет возникать никаких исключений. Однако вместо того, чтобы возвращать литерал объекта, {ok:true}
, он вернется undefined
и код ниже этого не будет достигнут. Поставьте открывающие скобки на одну строку, и она вернет объект, который вы, возможно, ожидали.
Вопрос в том, считаете ли вы этот аргумент достаточно убедительным?
Ни один из них не лучше другого. Просто выберите один и используйте его последовательно.
Все субъективно. Некоторые немного лучше, но разница незначительна. Самое важное, что нужно сделать - это оставаться единообразным во всем вашем коде.
Лично я предпочитаю заправленные по стилю, с 4 пробелами "настоящие" вкладки.
function a () { если (б) { делать; } еще { do2; } }
Я предпочитаю их в одной строке, но в основном потому, что я часто передаю анонимные функции в качестве аргументов... это экономит место и делает определение функции менее резким. Конечно, это всего лишь мнение, и я согласен с Bytecode Ninja, что согласованность - это самая важная вещь.
Я предпочитаю метод K&R по тем же причинам, которые указаны выше. Это выглядит более компактно, и две соответствующие линии сгруппированы вместе.
Как указано во многих ответах, в основном важно, чтобы вы нашли стиль, которого придерживаетесь вы (и / или ваши товарищи по команде, если применимо). Лично я предпочитаю ту же строку, как я обнаружил, что наложение фигурных скобок на новую строку может привести к множеству почти пустых строк, если вы работаете с замыканиями и вложенными функциями, что делает код менее читабельным для меня (хотя, вероятно, не для большинство людей...)