Skip to content
← Back to rules

eslint/id-length スタイル

何をするか

このルールは、指定された識別子のグラフィム数をカウントすることで、最小および/または最大の識別子長に関する規則を適用します。

なぜ問題なのか

ex\_t のような非常に短い識別子名や、hashGeneratorResultOutputContainerObject のような非常に長い識別子名は、コードの読みやすさを低下させ、保守性も損なう可能性があります。これを防ぐために、最小および/または最大の識別子長を強制することがあります。

このルールに対して 誤り なコードの例:

js
/* id-length: "error" */ // デフォルトは最小2文字 ({ "min": 2 })

const x = 5;
obj.e = document.body;
const foo = function (e) {};
try {
  dangerousStuff();
} catch (e) {
  // 多くの人が無視しているため
}
const myObj = { a: 1 };
(a) => {
  a * a;
};
class y {}
class Foo {
  x() {}
}
class Bar {
  #x() {}
}
class Baz {
  x = 1;
}
class Qux {
  #x = 1;
}
function bar(...x) {}
function baz([x]) {}
const [z] = arr;
const {
  prop: [i],
} = {};
function qux({ x }) {}
const { j } = {};
const { prop: a } = {};
({ prop: obj.x } = {});

このルールに対して 正しい コードの例:

js
/* id-length: "error" */ // デフォルトは最小2文字 ({ "min": 2 })

const num = 5;
function _f() {
  return 42;
}
function _func() {
  return 42;
}
obj.el = document.body;
const foo = function (evt) {
  /* 処理を行う */
};
try {
  dangerousStuff();
} catch (error) {
  // 多くの人が無視しているため
}
const myObj = { apple: 1 };
(num) => {
  num * num;
};
function bar(num = 0) {}
class MyClass {}
class Foo {
  method() {}
}
class Bar {
  #method() {}
}
class Baz {
  field = 1;
}
class Qux {
  #field = 1;
}
function baz(...args) {}
function qux([longName]) {}
const { prop } = {};
const {
  prop: [name],
} = {};
const [longName] = arr;
function foobar({ prop }) {}
function foobaz({ a: prop }) {}
const { a: property } = {};
({ prop: obj.longName } = {});
const data = { x: 1 }; // 引用があるため除外
data["y"] = 3; // 計算されたプロパティアクセスのため除外

設定

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

exceptionPatterns

type: string[]

識別子のルールから除外する正規表現パターンの配列。 たとえば、"^x.*" は "x" で始まるすべての識別子を除外します。

exceptions

type: string[]

default: []

ルールから除外される識別子名の配列。 たとえば、["x", "y", "z"] は "x"、"y"、"z" の単一文字識別子を許可します。

max

type: integer

default: 18446744073709551615

識別子に許可されるグラフィム数の最大値。 デフォルトでは上限なし(実質的に無制限)。

min

type: integer

default: 2

識別子に必要な最小のグラフィム数。

properties

type: "always" | "never"

default: "always"

"never" に設定すると、プロパティ名の長さチェックは行われません。 "always"(デフォルト)に設定すると、他の識別子と同様にプロパティ名もチェックされます。

使用方法

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

json
{
  "rules": {
    "id-length": "error"
  }
}
bash
oxlint --deny id-length

参照