стиль фигурных скобок
Принудительно применять согласованный стиль фигурных скобок для блоков
Некоторые проблемы, выявленные этим правилом, автоматически исправляются с помощью параметра командной строки --fix командной строки
Это правило устарело в ESLint v8.53.0. Используйте соответствующее правило соответствующее правило в @stylistic/eslint-plugin-js.
Стиль фигурных скобок тесно связан со стилем отступов в программировании и описывает размещение фигурных скобок относительно оператора управления и тела. В мире, вероятно, есть дюжина, если не больше, стилей фигурных скобок.
Единственный истинный стиль фигурных скобок — один из самых распространённых стилей фигурных скобок в JavaScript, в котором открывающая фигурная скобка блока размещается в той же строке, что и соответствующий оператор или объявление. Например:
if (foo) {
bar();
} else {
baz();
}
Один распространенный вариант единственного истинного стиля фигурных скобок называется Stroustrup, в котором else операторы в if-else конструкции, а также catch и finally, должны находиться в отдельной строке после предшествующей закрывающей фигурной скобки. Например:
if (foo) {
bar();
}
else {
baz();
}
Другой стиль называется Allman, в котором все фигурные скобки должны находиться в отдельных строках без каких-либо дополнительных отступов. Например:
if (foo)
{
bar();
}
else
{
baz();
}
Хотя ни один стиль не считается лучше другого, большинство разработчиков согласны с тем, что согласованный стиль в проекте важен для его долгосрочной поддерживаемости.
Подробности правила
Это правило принуждает к применению согласованного стиля фигурных скобок для блоков.
Параметры
Это правило имеет строковый параметр:
-
"1tbs"(по умолчанию) принуждает к применению единственного истинного стиля фигурных скобок -
"stroustrup"принуждает к применению стиля Stroustrup -
"allman"принуждает к применению стиля Allman
Это правило имеет параметр типа объект для исключений:
-
"allowSingleLine": true(по умолчаниюfalse) разрешает размещение открывающей и закрывающей фигурных скобок блока в одной строке
1tbs
Примеры неправильного кода для этого правила с параметром по умолчанию "1tbs":
/*eslint brace-style: "error"*/
function foo()
return true;
}
if (foo)
bar();
}
try
somethingRisky();
} catch(e)
handleError();
}
if (foo) {
bar();
else {
baz();
}
class C
static
foo();
}
}
Примеры правильного кода для этого правила с параметром по умолчанию "1tbs":
/*eslint brace-style: "error"*/
function foo() {
return true;
}
if (foo) {
bar();
}
if (foo) {
bar();
} else {
baz();
}
try {
somethingRisky();
} catch(e) {
handleError();
}
class C {
static {
foo();
}
}
// when there are no braces, there are no problems
if (foo) bar();
else if (baz) boom();
Примеры правильного кода для этого правила с "1tbs", { "allowSingleLine": true } параметрами:
/*eslint brace-style: ["error", "1tbs", { "allowSingleLine": true }]*/
function nop() { return; }
if (foo) { bar(); }
if (foo) { bar(); } else { baz(); }
try { somethingRisky(); } catch(e) { handleError(); }
if (foo) { baz(); } else {
boom();
}
if (foo) { baz(); } else if (bar) {
boom();
}
if (foo) { baz(); } else
if (bar) {
boom();
}
if (foo) { baz(); } else if (bar) {
boom();
}
try { somethingRisky(); } catch(e) {
handleError();
}
class C {
static { foo(); }
}
class D { static { foo(); } }
stroustrup
Примеры неправильного кода для этого правила с "stroustrup" параметром:
/*eslint brace-style: ["error", "stroustrup"]*/
function foo()
return true;
}
if (foo)
bar();
}
try
somethingRisky();
catch(e)
handleError();
}
class C
static
foo();
}
}
if (foo) {
bar();
else {
baz();
}
Примеры правильного кода для этого правила с "stroustrup" параметром:
/*eslint brace-style: ["error", "stroustrup"]*/
function foo() {
return true;
}
if (foo) {
bar();
}
if (foo) {
bar();
}
else {
baz();
}
try {
somethingRisky();
}
catch(e) {
handleError();
}
class C {
static {
foo();
}
}
// when there are no braces, there are no problems
if (foo) bar();
else if (baz) boom();
Примеры правильного кода для этого правила с "stroustrup", { "allowSingleLine": true } параметрами:
/*eslint brace-style: ["error", "stroustrup", { "allowSingleLine": true }]*/
function nop() { return; }
if (foo) { bar(); }
if (foo) { bar(); }
else { baz(); }
try { somethingRisky(); }
catch(e) { handleError(); }
class C {
static { foo(); }
}
class D { static { foo(); } }
allman
Примеры неправильного кода для этого правила с "allman" параметром:
/*eslint brace-style: ["error", "allman"]*/
function foo()
return true;
}
if (foo)
{
bar();
try
{
somethingRisky();
catch(e)
{
handleError();
}
class C
static
foo();
}
}
if (foo)
bar();
else
baz();
}
Примеры правильного кода для этого правила с "allman" параметром:
/*eslint brace-style: ["error", "allman"]*/
function foo()
{
return true;
}
if (foo)
{
bar();
}
if (foo)
{
bar();
}
else
{
baz();
}
try
{
somethingRisky();
}
catch(e)
{
handleError();
}
class C
{
static
{
foo();
}
}
// when there are no braces, there are no problems
if (foo) bar();
else if (baz) boom();
Примеры правильного кода для этого правила с "allman", { "allowSingleLine": true } параметрами:
/*eslint brace-style: ["error", "allman", { "allowSingleLine": true }]*/
function nop() { return; }
if (foo) { bar(); }
if (foo) { bar(); }
else { baz(); }
try { somethingRisky(); }
catch(e) { handleError(); }
class C
{
static { foo(); }
static
{ foo(); }
}
class D { static { foo(); } }
Когда не стоит его использовать
Если вы не хотите применять определенный стиль фигурных скобок, не включайте это правило.
Связанные правила
Версия
Это правило было добавлено в ESLint v0.0.7.
Дополнительное чтение
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/brace-style