curly
Обеспечивает единообразный стиль фигурных скобок во всех управляющих конструкциях
Некоторые проблемы, о которых сообщает это правило, можно исправить автоматически с помощью параметра командной строки --fix
В настоящее время это правило заморожено, и предложения по новым функциям не принимаются.
В JavaScript можно опускать фигурные скобки, если блок содержит только одну инструкцию. Однако многие считают хорошей практикой никогда не опускать фигурные скобки вокруг блоков, даже если они необязательны, поскольку это может привести к ошибкам и ухудшает читаемость кода. Таким образом, следующий код:
if (foo) foo++;
Можно переписать так:
if (foo) {
foo++;
}
Однако некоторые предпочитают использовать скобки только тогда, когда выполняется более одной инструкции.
Подробнее о правиле
Это правило призвано предотвращать ошибки и повышать читаемость кода, гарантируя, что инструкции блока заключены в фигурные скобки. Оно выдаст предупреждение, если обнаружит блоки без фигурных скобок.
Параметры
all
Примеры неправильного кода для параметра по умолчанию "all":
/*eslint curly: "error"*/
if (foo)
while (bar)
if (foo) {
baz();
} else
Примеры правильного кода для параметра по умолчанию "all":
/*eslint curly: "error"*/
if (foo) {
foo++;
}
while (bar) {
baz();
}
if (foo) {
baz();
} else {
qux();
}
multi
По умолчанию это правило выдает предупреждение, если if, else, for, while или do используются без инструкции блока в качестве тела. Однако можно указать, что инструкции блока следует использовать только при наличии в блоке нескольких инструкций, и выдавать предупреждение, если в блоке содержится только одна инструкция.
Примеры неправильного кода для параметра "multi":
/*eslint curly: ["error", "multi"]*/
if (foo)
if (foo) bar();
else
while (true)
for (let i=0; i < items.length; i++)
Примеры правильного кода для параметра "multi":
/*eslint curly: ["error", "multi"]*/
if (foo) foo++;
else foo();
while (true) {
doSomething();
doSomethingElse();
}
multi-line
В качестве альтернативы можно смягчить правило и разрешить однострочные конструкции if, else if, else, for, while или do без фигурных скобок, продолжая требовать фигурные скобки во всех остальных случаях.
Примеры неправильного кода для параметра "multi-line":
/*eslint curly: ["error", "multi-line"]*/
if (foo)
else
if (foo)
Примеры правильного кода для параметра "multi-line":
/*eslint curly: ["error", "multi-line"]*/
if (foo) foo++; else doSomething();
if (foo) foo++;
else if (bar) baz()
else doSomething();
do something();
while (foo);
while (foo
&& bar) baz();
if (foo) {
foo++;
}
if (foo) { foo++; }
while (true) {
doSomething();
doSomethingElse();
}
multi-or-nest
Можно использовать другую конфигурацию, которая требует, чтобы конструкции if, else if, else, for, while или do не заключались в фигурные скобки, если их тело содержит только одну однострочную инструкцию. Во всех остальных случаях скобки обязательны.
Примеры неправильного кода для параметра "multi-or-nest":
/*eslint curly: ["error", "multi-or-nest"]*/
if (!foo)
while (true)
if (foo)
while (true)
for (let i = 0; foo; i++)
Примеры правильного кода для параметра "multi-or-nest":
/*eslint curly: ["error", "multi-or-nest"]*/
if (!foo) {
foo = {
bar: baz,
qux: foo
};
}
while (true) {
if(foo)
doSomething();
else
doSomethingElse();
}
if (foo)
foo++;
while (true)
doSomething();
for (let i = 0; foo; i++)
doSomething();
Для однострочных инструкций, которым предшествует комментарий, фигурные скобки допустимы, но не обязательны.
Примеры дополнительного правильного кода для параметра "multi-or-nest":
/*eslint curly: ["error", "multi-or-nest"]*/
if (foo)
// some comment
bar();
if (foo) {
// some comment
bar();
}
consistent
При использовании любого из параметров multi* можно добавить параметр, требующий, чтобы тела конструкций if, else if и else использовали фигурные скобки либо все вместе, либо не использовали их вовсе.
Примеры неправильного кода для параметров "multi", "consistent":
/*eslint curly: ["error", "multi", "consistent"]*/
if (foo) {
bar();
baz();
} else
if (foo)
else if (faa)
else {
other();
things();
}
if (true)
foo();
else
if (foo)
Примеры правильного кода для параметров "multi", "consistent":
/*eslint curly: ["error", "multi", "consistent"]*/
if (foo) {
bar();
baz();
} else {
buz();
}
if (foo) {
bar();
} else if (faa) {
bor();
} else {
other();
things();
}
if (true)
foo();
else
baz();
if (foo)
foo++;
Когда не следует использовать это правило
Если у вас нет строгих соглашений о том, когда использовать инструкции блока, а когда нет, это правило можно безопасно отключить.
Версия
Это правило появилось в ESLint v0.0.2.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/curly