Spec-Zone.ru › ESLint

Длина идентификатора

Принудительное применение минимальной и максимальной длины идентификаторов

Очень короткие имена идентификаторов, такие как e, x, _t или очень длинные, такие как hashGeneratorResultOutputContainerObject, могут затруднить чтение кода и, возможно, снизить его поддерживаемость. Чтобы предотвратить это, можно применить минимальную и/или максимальную длину идентификатора.

var x = 5; // too short; difficult to understand its purpose without context

Подробности правила

Это правило принуждает соблюдение конвенции о минимальной и/или максимальной длине идентификаторов.

Это правило считает графемы вместо использования String length.

Параметры

Примеры некорректного кода для этого правила с параметрами по умолчанию:

Открыть в Playground
/*eslint id-length: "error"*/     // default is minimum 2-chars ({ "min": 2 })

var x = 5;
obj.e = document.body;
var foo = function (e) { };
try {
    dangerousStuff();
} catch (e) {
    // ignore as many do
}
var 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]) { }
var [x] = arr;
var { prop: [x]} = {};
function qux({x}) { }
var { x } = {};
var { prop: a} = {};
({ prop: obj.x } = {});

Примеры корректного кода для этого правила с параметрами по умолчанию:

Открыть в Playground
/*eslint id-length: "error"*/     // default is minimum 2-chars ({ "min": 2 })

var num = 5;
function _f() { return 42; }
function _func() { return 42; }
obj.el = document.body;
var foo = function (evt) { /* do stuff */ };
try {
    dangerousStuff();
} catch (error) {
    // ignore as many do
}
var 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]) { }
var { prop } = {};
var { prop: [longName] } = {};
var [longName] = arr;
function foobar({ prop }) { }
function foobaz({ a: prop }) { }
var { prop } = {};
var { a: prop } = {};
({ prop: obj.longName } = {});
var data = { "x": 1 };  // excused because of quotes
data["y"] = 3;  // excused because of calculated property access

Это правило имеет параметр объекта:

  • "min" (по умолчанию: 2) принуждает минимальную длину идентификатора
  • "max" (по умолчанию: Infinity) принуждает максимальную длину идентификатора
  • "properties": always (по умолчанию) принуждает конвенцию длины идентификатора для имён свойств
  • "properties": never игнорирует конвенцию длины идентификатора для имён свойств
  • "exceptions" позволяет массив указанных имён идентификаторов
  • "exceptionPatterns" массив строк, представляющих шаблоны регулярных выражений, позволяет идентификаторы, соответствующие любому из шаблонов.

min

Примеры некорректного кода для этого правила с параметром { "min": 4 }:

Открыть в Playground
/*eslint id-length: ["error", { "min": 4 }]*/

var val = 5;
obj.e = document.body;
function foo (e) { };
try {
    dangerousStuff();
} catch (e) {
    // ignore as many do
}
var myObj = { a: 1 };
(val) => { val * val };
class y { }
class Foo { x() {} }
function bar(...x) { }
var { x } = {};
var { prop: a} = {};
var [x] = arr;
var { prop: [x]} = {};
({ prop: obj.x } = {});

Примеры корректного кода для этого правила с параметром { "min": 4 }:

Открыть в Playground
/*eslint id-length: ["error", { "min": 4 }]*/

var value = 5;
function func() { return 42; }
object.element = document.body;
var foobar = function (event) { /* do stuff */ };
try {
    dangerousStuff();
} catch (error) {
    // ignore as many do
}
var myObj = { apple: 1 };
(value) => { value * value };
function foobaz(value = 0) { }
class MyClass { }
class Foobar { method() {} }
function barbaz(...args) { }
var { prop } = {};
var [longName] = foo;
var { a: [prop] } = {};
var { a: longName } = {};
({ prop: object.name } = {});
var data = { "x": 1 };  // excused because of quotes
data["y"] = 3;  // excused because of calculated property access

max

Примеры некорректного кода для этого правила с параметром { "max": 10 }:

Открыть в Playground
/*eslint id-length: ["error", { "max": 10 }]*/

var reallyLongVarName = 5;
function reallyLongFuncName() { return 42; }
obj.reallyLongPropName = document.body;
var foo = function (reallyLongArgName) { /* do stuff */ };
try {
    dangerousStuff();
} catch (reallyLongErrorName) {
    // ignore as many do
}
(reallyLongArgName) => { return !reallyLongArgName; };
var [reallyLongFirstElementName] = arr;

Примеры корректного кода для этого правила с параметром { "max": 10 }:

Открыть в Playground
/*eslint id-length: ["error", { "max": 10 }]*/

var varName = 5;
function funcName() { return 42; }
obj.propName = document.body;
var foo = function (arg) { /* do stuff */ };
try {
    dangerousStuff();
} catch (error) {
    // ignore as many do
}
(arg) => { return !arg; };
var [first] = arr;

свойства

Примеры корректного кода для этого правила с параметром { "properties": "never" }:

Открыть в Playground
/*eslint id-length: ["error", { "properties": "never" }]*/

var myObj = { a: 1 };
({ a: obj.x.y.z } = {});
({ prop: obj.i } = {});

исключения

Примеры дополнительного корректного кода для этого правила с параметром { "exceptions": ["x", "y", "z", "ζ"] }:

Открыть в Playground
/*eslint id-length: ["error", { "exceptions": ["x", "y", "z", "ζ"] }]*/

var x = 5;
function y() { return 42; }
obj.x = document.body;
var foo = function (x) { /* do stuff */ };
try {
    dangerousStuff();
} catch (x) {
    // ignore as many do
}
(x) => { return x * x; };
var [x] = arr;
const { z } = foo;
const { a: ζ } = foo;

exceptionPatterns

Примеры дополнительного корректного кода для этого правила с параметром { "exceptionPatterns": ["E|S", "[x-z]"] }:

Открыть в Playground
/*eslint id-length: ["error", { "exceptionPatterns": ["E|S", "[x-z]"] }]*/

var E = 5;
function S() { return 42; }
obj.x = document.body;
var foo = function (x) { /* do stuff */ };
try {
    dangerousStuff();
} catch (x) {
    // ignore as many do
}
(y) => {return  y * y};
var [E] = arr;
const { y } = foo;
const { a: z } = foo;

Связанные правила

  • max-len
  • new-cap
  • func-names
  • camelcase

Версия

Это правило было добавлено в ESLint v1.0.0.

Ресурсы

  • Исходный код правила
  • Исходный код тестов

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/id-length

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API