id-length
Установка минимальной и максимальной длины идентификаторов
В настоящее время это правило заморожено, и запросы на добавление новых функций не принимаются.
Очень короткие имена идентификаторов, например e, x, _t, или очень длинные, например hashGeneratorResultOutputContainerObject, могут затруднять чтение кода и потенциально усложнять его поддержку. Чтобы этого избежать, можно установить минимальную и/или максимальную длину идентификаторов.
const x = 5; // too short; difficult to understand its purpose without context
Подробности правила
Это правило требует соблюдения соглашения о минимальной и/или максимальной длине идентификаторов.
Это правило подсчитывает графемы, а не использует String length.
Параметры
Примеры неправильного кода для этого правила с параметрами по умолчанию:
/*eslint id-length: "error"*/ // default is minimum 2-chars ({ "min": 2 })
const = 5;
obj. = document.body;
const foo = function () { };
try {
dangerousStuff();
} catch () {
// ignore as many do
}
const myObj = { : 1 };
() => { a * a };
class { }
class Foo { () {} }
class Bar { () {} }
class Baz { = 1 }
class Qux { = 1 }
function bar(...) { }
function baz([]) { }
const [] = arr;
const { prop: []} = {};
function qux({}) { }
const { } = {};
const { prop: } = {};
({ prop: obj. } = {});
Примеры правильного кода для этого правила с параметрами по умолчанию:
/*eslint id-length: "error"*/ // default is minimum 2-chars ({ "min": 2 })
const num = 5;
function _f() { return 42; }
function _func() { return 42; }
obj.el = document.body;
const foo = function (evt) { /* do stuff */ };
try {
dangerousStuff();
} catch (error) {
// ignore as many do
}
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 }; // 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 }:
/*eslint id-length: ["error", { "min": 4 }]*/
const = 5;
. = document.body;
function () { };
try {
dangerousStuff();
} catch () {
// ignore as many do
}
const myObj = { : 1 };
() => { val * val };
class { }
class { () {} }
function (...) { }
const { } = {};
const { prop: } = {};
const [] = arr;
const { prop: []} = {};
({ prop: . } = {});
Примеры правильного кода для этого правила с параметром { "min": 4 }:
/*eslint id-length: ["error", { "min": 4 }]*/
const value = 5;
function func() { return 42; }
object.element = document.body;
const foobar = function (event) { /* do stuff */ };
try {
dangerousStuff();
} catch (error) {
// ignore as many do
}
const myObj = { apple: 1 };
(value) => { value * value };
function foobaz(value = 0) { }
class MyClass { }
class Foobar { method() {} }
function barbaz(...args) { }
const { prop } = {};
const [longName] = foo;
const { a: [name] } = {};
const { a: record } = {};
({ prop: object.name } = {});
const data = { "x": 1 }; // excused because of quotes
data["y"] = 3; // excused because of calculated property access
max
Примеры неправильного кода для этого правила с параметром { "max": 10 }:
/*eslint id-length: ["error", { "max": 10 }]*/
const = 5;
function () { return 42; }
obj. = document.body;
const foo = function () { /* do stuff */ };
try {
dangerousStuff();
} catch () {
// ignore as many do
}
() => { return !reallyLongArgName; };
const [] = arr;
Примеры правильного кода для этого правила с параметром { "max": 10 }:
/*eslint id-length: ["error", { "max": 10 }]*/
const varName = 5;
function funcName() { return 42; }
obj.propName = document.body;
const foo = function (arg) { /* do stuff */ };
try {
dangerousStuff();
} catch (error) {
// ignore as many do
}
(arg) => { return !arg; };
const [first] = arr;
properties
Примеры правильного кода для этого правила с параметром { "properties": "never" }:
/*eslint id-length: ["error", { "properties": "never" }]*/
const myObj = { a: 1 };
({ a: obj.x.y.z } = {});
({ prop: obj.i } = {});
exceptions
Примеры дополнительного правильного кода для этого правила с параметром { "exceptions": ["x", "y", "z", "ζ"] }:
/*eslint id-length: ["error", { "exceptions": ["x", "y", "z", "ζ", "i"] }]*/
const x = 5;
function y() { return 42; }
obj.x = document.body;
const foo = function (x) { /* do stuff */ };
try {
dangerousStuff();
} catch (x) {
// ignore as many do
}
(x) => { return x * x; };
const [i] = arr;
const { z } = foo;
const { a: ζ } = foo;
exceptionPatterns
Примеры дополнительного правильного кода для этого правила с параметром { "exceptionPatterns": ["E|S", "[x-z]"] }:
/*eslint id-length: ["error", { "exceptionPatterns": ["E|S|X", "[x-z]"] }]*/
const E = 5;
function S() { return 42; }
obj.x = document.body;
const foo = function (x) { /* do stuff */ };
try {
dangerousStuff();
} catch (x) {
// ignore as many do
}
(y) => {return y * y};
const [X] = arr;
const { y } = foo;
const { a: z } = foo;
Связанные правила
Версия
Это правило появилось в ESLint v1.0.0.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/id-length