id-match
Требует, чтобы идентификаторы соответствовали заданному регулярному выражению
Это правило в настоящее время заморожено, и запросы на новые функции не принимаются.
«В информатике есть только две сложные задачи: сброс кэша и присвоение имен». — Фил Карлтон
Последовательное именование сущностей в проекте — часто недооцениваемый аспект разработки кода. Если всё делать правильно, это может сэкономить вашей команде часы ненужных раздумий и неверных решений. Это правило позволяет точно определить, какие имена переменных и функций должна использовать ваша команда, и обеспечить их соблюдение. Больше не нужно ограничиваться camelCase, snake_case, PascalCase или HungarianNotation. id-match позаботится обо всех ваших потребностях!
Описание правила
Это правило требует, чтобы идентификаторы в присваиваниях и определениях function соответствовали заданному регулярному выражению.
Параметры
Это правило принимает строковый параметр, задающий регулярное выражение.
Например, чтобы обеспечить соблюдение соглашения об именовании в camelCase:
{
"id-match": ["error", "^[a-z]+([A-Z][a-z]+)*$"]
}
Примеры неправильного кода для этого правила с параметром "^[a-z]+([A-Z][a-z]+)*$":
/*eslint id-match: ["error", "^[a-z]+([A-Z][a-z]+)*$"]*/
const = "#112C85";
const = "#112C85";
const = "#112C85";
const = "#112C85";
function () {
// ...
}
class {}
class myClass {
() {}
}
class anotherClass {
() {}
}
Примеры правильного кода для этого правила с параметром "^[a-z]+([A-Z][a-z]+)*$":
/*eslint id-match: ["error", "^[a-z]+([A-Z][a-z]+)*$"]*/
const myFavoriteColor = "#112C85";
const foo = bar.baz_boom;
const buz = { qux: bar.baz_boom };
do_something();
const obj = {
my_pref: 1
};
class myClass {}
class anotherClass {
doSomething() {}
}
class oneMoreClass {
#doSomething() {}
}
Это правило принимает объектный параметр:
-
"properties": false(по умолчанию) не проверяет свойства объектов -
"properties": trueтребует, чтобы свойства литералов объектов и свойства присваиваний в выражениях доступа к членам соответствовали заданному регулярному выражению -
"classFields": false(по умолчанию) не проверяет имена полей классов -
"classFields": trueтребует, чтобы имена полей классов соответствовали заданному регулярному выражению -
"onlyDeclarations": false(по умолчанию) требует, чтобы все имена переменных соответствовали заданному регулярному выражению -
"onlyDeclarations": trueтребует, чтобы заданному регулярному выражению соответствовали только объявленияvar,const,let,functionиclass -
"ignoreDestructuring": false(по умолчанию) применяетid-matchк деструктурированным идентификаторам -
"ignoreDestructuring": trueне проверяет деструктурированные идентификаторы
properties
Примеры неправильного кода для этого правила с параметрами "^[a-z]+([A-Z][a-z]+)*$", { "properties": true }:
/*eslint id-match: ["error", "^[a-z]+([A-Z][a-z]+)*$", { "properties": true }]*/
const obj = {
: 1
};
obj. = function() {
// ...
};
classFields
Примеры неправильного кода для этого правила с параметрами "^[a-z]+([A-Z][a-z]+)*$", { "classFields": true }:
/*eslint id-match: ["error", "^[a-z]+([A-Z][a-z]+)*$", { "classFields": true }]*/
class myClass {
= 1;
}
class anotherClass {
= 1;
}
onlyDeclarations
Примеры правильного кода для этого правила с параметрами "^[a-z]+([A-Z][a-z]+)*$", { "onlyDeclarations": true }:
/*eslint id-match: [2, "^[a-z]+([A-Z][a-z]+)*$", { "onlyDeclarations": true }]*/
foo = __dirname;
ignoreDestructuring: false
Примеры неправильного кода для этого правила со значением параметра "^[^_]+$", { "ignoreDestructuring": false } по умолчанию:
/*eslint id-match: [2, "^[^_]+$", { "ignoreDestructuring": false }]*/
const { } = query;
const { = 1 } = query;
const { : } = query;
const { category_id: } = query;
const { category_id: , ... } = query;
ignoreDestructuring: true
Примеры неправильного кода для этого правила с параметром "^[^_]+$", { "ignoreDestructuring": true }:
/*eslint id-match: [2, "^[^_]+$", { "ignoreDestructuring": true }]*/
const { category_id: } = query;
const { category_id: , ... } = query;
Примеры правильного кода для этого правила с параметром "^[^_]+$", { "ignoreDestructuring": true }:
/*eslint id-match: [2, "^[^_]+$", { "ignoreDestructuring": true }]*/
const { category_id } = query;
const { category_Id = 1 } = query;
const { category_alias: category_alias } = query;
Когда не следует использовать
Если вы не хотите применять какое-либо конкретное соглашение об именовании ко всем идентификаторам или если ваше соглашение об именовании слишком сложно, чтобы обеспечить его соблюдение с помощью настройки этого правила, не включайте это правило.
Версия
Это правило появилось в ESLint v1.0.0.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/id-match