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]+)*$"]*/
var = "#112C85";
var = "#112C85";
var = "#112C85";
var = "#112C85";
function () {
// ...
}
class {}
class myClass {
() {}
}
class anotherClass {
() {}
}
Примеры правильного кода для этого правила с "^[a-z]+([A-Z][a-z]+)*$" параметром:
/*eslint id-match: ["error", "^[a-z]+([A-Z][a-z]+)*$"]*/
var myFavoriteColor = "#112C85";
var foo = bar.baz_boom;
var foo = { qux: bar.baz_boom };
do_something();
var 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не проверяет идентификаторы, разложенные по структурам
Свойства
Примеры неправильного кода для этого правила с "^[a-z]+([A-Z][a-z]+)*$", { "properties": true } параметрами:
/*eslint id-match: ["error", "^[a-z]+([A-Z][a-z]+)*$", { "properties": true }]*/
var 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;
}
толькоОбъявления
Примеры правильного кода для этого правила с "^[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 }]*/
var { } = query;
var { = 1 } = query;
var { : } = query;
var { category_id: } = query;
var { category_id: categoryId, ... } = query;
ignoreDestructuring: true
Примеры неправильного кода для этого правила с "^[^_]+$", { "ignoreDestructuring": true } параметром:
/*eslint id-match: [2, "^[^_]+$", { "ignoreDestructuring": true }]*/
var { category_id: } = query;
var { category_id, ... } = query;
Примеры правильного кода для этого правила с "^[^_]+$", { "ignoreDestructuring": true } параметром:
/*eslint id-match: [2, "^[^_]+$", { "ignoreDestructuring": true }]*/
var { category_id } = query;
var { category_id = 1 } = query;
var { category_id: category_id } = query;
Когда не стоит его использовать
Если вы не хотите навязывать какую-либо конкретную конвенцию именования для всех идентификаторов или ваша конвенция слишком сложна для обеспечения с помощью этого правила, вам не следует его активировать.
Версия
Это правило было введено в ESLint v1.0.0.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/id-match