Skip to content
← Back to rules

eslint/max-statements スタイル

何をするか

関数内のステートメント数の最大値を強制します。このルールは、関数が指定されたステートメント数を超えないように保証し、保守性や理解しやすさを高めるために、より小さく焦点を絞った関数を促進します。

なぜ悪いのか

一部の人々は、大きな関数はコードの悪臭(コードスメル)であると考えます。大きな関数は多くのことを行い、何が行われているか追うのが難しくなる傾向があります。このルールは、大きな関数の作成を回避するのに役立ちます。

デフォルトの { "max": 10 } オプションで 誤り のコード例:

js
function foo() {
  const foo1 = 1;
  const foo2 = 2;
  const foo3 = 3;
  const foo4 = 4;
  const foo5 = 5;
  const foo6 = 6;
  const foo7 = 7;
  const foo8 = 8;
  const foo9 = 9;
  const foo10 = 10;

  const foo11 = 11; // 過剰です。
}

const bar = () => {
  const foo1 = 1;
  const foo2 = 2;
  const foo3 = 3;
  const foo4 = 4;
  const foo5 = 5;
  const foo6 = 6;
  const foo7 = 7;
  const foo8 = 8;
  const foo9 = 9;
  const foo10 = 10;

  const foo11 = 11; // 過剰です。
};

デフォルトの { "max": 10 } オプションで 正しい コード例:

js
function foo() {
  const foo1 = 1;
  const foo2 = 2;
  const foo3 = 3;
  const foo4 = 4;
  const foo5 = 5;
  const foo6 = 6;
  const foo7 = 7;
  const foo8 = 8;
  const foo9 = 9;
  return function () {
    // 10

    // 内部関数内のステートメント数は、ステートメントの最大値にカウントされません。

    let bar;
    let baz;
    return 42;
  };
}

const bar = () => {
  const foo1 = 1;
  const foo2 = 2;
  const foo3 = 3;
  const foo4 = 4;
  const foo5 = 5;
  const foo6 = 6;
  const foo7 = 7;
  const foo8 = 8;
  const foo9 = 9;
  return function () {
    // 10

    // 内部関数内のステートメント数は、ステートメントの最大値にカウントされません。

    let bar;
    let baz;
    return 42;
  };
};

このルールはクラスの静的ブロックには適用されず、クラスの静的ブロック内のステートメントは、ラッピングされている関数内のステートメントとしてカウントされないことに注意してください。

{ "max": 2 } オプションで 正しい コード例:

js
function foo() {
  let one;
  let two = class {
    static {
      let three;
      let four;
      let five;
      if (six) {
        let seven;
        let eight;
        let nine;
      }
    }
  };
}

{ "max": 10 }, { "ignoreTopLevelFunctions": true } オプションで追加の 正しい コード例:

js
function foo() {
  const foo1 = 1;
  const foo2 = 2;
  const foo3 = 3;
  const foo4 = 4;
  const foo5 = 5;
  const foo6 = 6;
  const foo7 = 7;
  const foo8 = 8;
  const foo9 = 9;
  const foo10 = 10;
  const foo11 = 11;
}

設定

このルールは以下のプロパティを持つ設定オブジェクトを受け取ります。

ignoreTopLevelFunctions

型: boolean

デフォルト: false

トップレベルの関数を無視するかどうか。

max

型: integer

デフォルト: 10

関数あたりに許可される最大ステートメント数。

使用方法

設定ファイルまたは CLI でこのルールを 有効化 するには、次のように使用できます:

json
{
  "rules": {
    "max-statements": "error"
  }
}
bash
oxlint --deny max-statements

参照