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