eslint/curly 风格
它的作用
此规则强制所有控制语句(if、else、for、while、do、with)都使用大括号 {}。 它确保所有代码块都用大括号包围,以提高代码的清晰度和可维护性。
为什么这是个问题?
省略大括号会降低代码的可读性,并增加出错的可能性,尤其是在嵌套较深或缩进复杂的代码中。 如果后续添加新语句时未正确用大括号包裹,也可能导致潜在的错误。 始终一致地使用大括号可以使代码更安全且更容易修改。
示例
"all"(默认)
此规则下的错误代码示例:
/* curly: ["error", "all"] */
if (foo) foo++;
while (bar) bar--;
do foo();
while (bar);此规则下的正确代码示例:
/* curly: ["error", "all"] */
if (foo) {
foo++;
}
while (bar) {
bar--;
}
do {
foo();
} while (bar);"multi"
启用 "multi" 选项时,此规则下的错误代码示例:
/* curly: ["error", "multi"] */
if (foo) foo();
else {
bar();
baz();
}启用 "multi" 选项时,此规则下的正确代码示例:
/* curly: ["error", "multi"] */
if (foo) foo();
else bar();"multi-line"
启用 "multi-line" 选项时,此规则下的错误代码示例:
/* curly: ["error", "multi-line"] */
if (foo) foo();
else bar();
while (foo) foo();启用 "multi-line" 选项时,此规则下的正确代码示例:
/* curly: ["error", "multi-line"] */
if (foo) foo();
else bar();
while (foo) foo();
while (true) {
doSomething();
doSomethingElse();
}"multi-or-nest"
启用 "multi-or-nest" 选项时,此规则下的错误代码示例:
/* curly: ["error", "multi-or-nest"] */
if (foo) if (bar) bar();
while (foo) while (bar) bar();启用 "multi-or-nest" 选项时,此规则下的正确代码示例:
/* curly: ["error", "multi-or-nest"] */
if (foo) {
if (bar) bar();
}
while (foo) {
while (bar) bar();
}"consistent"
当启用 "consistent" 时,该规则会强制在 if-else 链中保持大括号使用的一致性。 如果链中的某一分支使用了大括号,则所有分支都必须使用大括号,即使根据第一个选项并非严格必要。
使用 "multi" 和 "consistent" 时的错误代码示例:
/* curly: ["error", "multi", "consistent"] */
if (foo) {
bar();
baz();
} else qux();
if (foo) bar();
else {
baz();
qux();
}使用 "multi" 和 "consistent" 时的正确代码示例:
/* curly: ["error", "multi", "consistent"] */
if (foo) {
bar();
baz();
} else {
qux();
}
if (foo) {
bar();
} else {
baz();
qux();
}使用 "multi-line" 和 "consistent" 时的错误代码示例:
/* curly: ["error", "multi-line", "consistent"] */
if (foo) {
bar();
} else baz();使用 "multi-line" 和 "consistent" 时的正确代码示例:
/* curly: ["error", "multi-line", "consistent"] */
if (foo) {
bar();
} else {
baz();
}使用 "multi-or-nest" 和 "consistent" 时的错误代码示例:
/* curly: ["error", "multi-or-nest", "consistent"] */
if (foo) {
if (bar) baz();
} else qux();使用 "multi-or-nest" 和 "consistent" 时的正确代码示例:
/* curly: ["error", "multi-or-nest", "consistent"] */
if (foo) {
if (bar) baz();
} else {
qux();
}配置
curly 规则的配置,指定为一个包含一到两个元素的数组。
示例:
["all"]- 所有情况下都要求使用大括号(默认)["multi"]- 仅对多语句代码块要求使用大括号["multi-line"]- 对多行代码块要求使用大括号["multi-or-nest"]- 对嵌套或跨多行的代码块要求使用大括号["multi", "consistent"]- 多语句模式下,在if-else链中保持大括号一致
第一个选项
type: "all" | "multi" | "multi-line" | "multi-or-nest"
curly 规则的强制执行类型。
"all"
在所有情况下都要求使用大括号(默认)
"multi"
仅当代码块中包含多个语句时才要求使用大括号
"multi-line"
当代码块跨越多行时要求使用大括号
"multi-or-nest"
当代码块是嵌套的或跨越多行时要求使用大括号
第二个选项
如何使用
要通过配置文件或命令行启用此规则,可以使用:
{
"rules": {
"curly": "error"
}
}oxlint --deny curly