Spec-Zone.ru › ESLint

стиль фигурных скобок

Принудительно применять согласованный стиль фигурных скобок для блоков

🔧 Исправимо

Некоторые проблемы, выявленные этим правилом, автоматически исправляются с помощью параметра командной строки --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":

Открыть в Playground
/*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":

Открыть в Playground
/*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 } параметрами:

Открыть в Playground
/*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" параметром:

Открыть в Playground
/*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" параметром:

Открыть в Playground
/*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 } параметрами:

Открыть в Playground
/*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" параметром:

Открыть в Playground
/*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" параметром:

Открыть в Playground
/*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 } параметрами:

Открыть в Playground
/*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(); } }

Когда не стоит его использовать

Если вы не хотите применять определенный стиль фигурных скобок, не включайте это правило.

Связанные правила

  • block-spacing
  • space-before-blocks

Версия

Это правило было добавлено в ESLint v0.0.7.

Дополнительное чтение

Стиль отступов - Википедия

Ресурсы

  • Исходный код правила
  • Исходный код тестов

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/brace-style

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API