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