# padded-blocks

要求或禁止在块内填充

一些该规则报告的问题可以通过 --fix 命令行选项 自动修复

一些样式指南要求块语句以空行开头和结尾。目标是通过在视觉上分离块内容和周围代码来提高可读性。

if (a) {

    b();

}

既然拥有一致的代码风格是件好事,那么您要么总是编写填充块,要么永远不要这样做。

# 规则详情

此规则在块内强制执行一致的空行填充。

# 选项

该规则有两个选项,第一个可以是字符串选项或对象选项。第二个是对象选项,它可以允许异常。

# 第一个选项

字符串选项:

  • "always"(默认)在块语句、函数体、类静态块、类和 switch 语句的开头和结尾处需要空行。
  • "never" 不允许在块语句、函数体、类静态块、类和 switch 语句的开头和结尾处出现空行。

对象选项:

  • "blocks" 要求或禁止在块语句、函数体和类静态块中填充
  • "classes" 要求或不允许在类中填充
  • "switches" 要求或禁止在 switch 语句中填充

# 第二种选择

  • "allowSingleLineBlocks": true 允许单行块

# always

此规则使用默认 "always" 选项的错误代码示例:

/*eslint padded-blocks: ["error", "always"]*/

if (a) {
    b();
}

if (a) { b(); }

if (a)
{
    b();
}

if (a) {
    b();

}

if (a) {
    // comment
    b();

}

class C {
    static {
        a();
    }
}

此规则使用默认 "always" 选项的正确代码示例:

/*eslint padded-blocks: ["error", "always"]*/

if (a) {

    b();

}

if (a)
{

    b();

}

if (a) {

    // comment
    b();

}

class C {

    static {

        a();

    }

}

# never

此规则使用 "never" 选项的错误代码示例:

/*eslint padded-blocks: ["error", "never"]*/

if (a) {

    b();

}

if (a)
{

    b();

}

if (a) {

    b();
}

if (a) {
    b();

}

class C {

    static {

        a();

    }

}

此规则使用 "never" 选项的正确代码示例:

/*eslint padded-blocks: ["error", "never"]*/

if (a) {
    b();
}

if (a)
{
    b();
}

class C {
    static {
        a();
    }
}

# blocks

此规则使用 { "blocks": "always" } 选项的错误代码示例:

/*eslint padded-blocks: ["error", { "blocks": "always" }]*/

if (a) {
    b();
}

if (a) { b(); }

if (a)
{
    b();
}

if (a) {

    b();
}

if (a) {
    b();

}

if (a) {
    // comment
    b();

}

class C {

    static {
        a();
    }

}

此规则使用 { "blocks": "always" } 选项的正确代码示例:

/*eslint padded-blocks: ["error", { "blocks": "always" }]*/

if (a) {

    b();

}

if (a)
{

    b();

}

if (a) {

    // comment
    b();

}

class C {

    static {

        a();

    }

}

class D {
    static {

        a();

    }

}

此规则使用 { "blocks": "never" } 选项的错误代码示例:

/*eslint padded-blocks: ["error", { "blocks": "never" }]*/

if (a) {

    b();

}

if (a)
{

    b();

}

if (a) {

    b();
}

if (a) {
    b();

}

class C {
    static {

        a();

    }
}

此规则使用 { "blocks": "never" } 选项的正确代码示例:

/*eslint padded-blocks: ["error", { "blocks": "never" }]*/

if (a) {
    b();
}

if (a)
{
    b();
}

class C {
    static {
        a();
    }
}

class D {

    static {
        a();
    }

}

# classes

此规则使用 { "classes": "always" } 选项的错误代码示例:

/*eslint padded-blocks: ["error", { "classes": "always" }]*/

class  A {
    constructor(){
    }
}

此规则使用 { "classes": "always" } 选项的正确代码示例:

/*eslint padded-blocks: ["error", { "classes": "always" }]*/

class  A {

    constructor(){
    }

}

此规则使用 { "classes": "never" } 选项的错误代码示例:

/*eslint padded-blocks: ["error", { "classes": "never" }]*/

class  A {

    constructor(){
    }

}

此规则使用 { "classes": "never" } 选项的正确代码示例:

/*eslint padded-blocks: ["error", { "classes": "never" }]*/

class  A {
    constructor(){
    }
}

# switches

此规则使用 { "switches": "always" } 选项的错误代码示例:

/*eslint padded-blocks: ["error", { "switches": "always" }]*/

switch (a) {
    case 0: foo();
}

此规则使用 { "switches": "always" } 选项的正确代码示例:

/*eslint padded-blocks: ["error", { "switches": "always" }]*/

switch (a) {

    case 0: foo();

}

if (a) {
    b();
}

此规则使用 { "switches": "never" } 选项的错误代码示例:

/*eslint padded-blocks: ["error", { "switches": "never" }]*/

switch (a) {

    case 0: foo();

}

此规则使用 { "switches": "never" } 选项的正确代码示例:

/*eslint padded-blocks: ["error", { "switches": "never" }]*/

switch (a) {
    case 0: foo();
}

if (a) {

    b();

}

# always + allowSingleLineBlocks

此规则使用 "always", {"allowSingleLineBlocks": true} 选项的错误代码示例:

/*eslint padded-blocks: ["error", "always", { allowSingleLineBlocks: true }]*/

if (a) {
    b();
}

if (a) {

    b();
}

if (a) {
    b();

}

此规则使用 "always", {"allowSingleLineBlocks": true} 选项的正确代码示例:

/*eslint padded-blocks: ["error", "always", { allowSingleLineBlocks: true }]*/

if (a) { b(); }

if (a) {

    b();

}

# 何时不使用

如果您不关心块内填充的一致性,您可以关闭此规则。

Last Updated: 5/13/2023, 8:55:38 PM