Spec-Zone.ru › ESLint

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]+)*$" параметром:

Открыть в Playground
/*eslint id-match: ["error", "^[a-z]+([A-Z][a-z]+)*$"]*/

var my_favorite_color = "#112C85";
var _myFavoriteColor  = "#112C85";
var myFavoriteColor_  = "#112C85";
var MY_FAVORITE_COLOR = "#112C85";
function do_something() {
    // ...
}

class My_Class {}

class myClass {
    do_something() {}
}

class anotherClass {
    #do_something() {}
}

Примеры правильного кода для этого правила с "^[a-z]+([A-Z][a-z]+)*$" параметром:

Открыть в Playground
/*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 } параметрами:

Открыть в Playground
/*eslint id-match: ["error", "^[a-z]+([A-Z][a-z]+)*$", { "properties": true }]*/

var obj = {
    my_pref: 1
};

obj.do_something = function() {
    // ...
};

classFields

Примеры неправильного кода для этого правила с "^[a-z]+([A-Z][a-z]+)*$", { "classFields": true } параметрами:

Открыть в Playground
/*eslint id-match: ["error", "^[a-z]+([A-Z][a-z]+)*$", { "classFields": true }]*/

class myClass {
    my_pref = 1;
}

class anotherClass {
    #my_pref = 1;
}

толькоОбъявления

Примеры правильного кода для этого правила с "^[a-z]+([A-Z][a-z]+)*$", { "onlyDeclarations": true } параметрами:

Открыть в Playground
/*eslint id-match: [2, "^[a-z]+([A-Z][a-z]+)*$", { "onlyDeclarations": true }]*/

foo = __dirname;

ignoreDestructuring: false

Примеры неправильного кода для этого правила с параметром "^[^_]+$", { "ignoreDestructuring": false } по умолчанию:

Открыть в Playground
/*eslint id-match: [2, "^[^_]+$", { "ignoreDestructuring": false }]*/

var { category_id } = query;

var { category_id = 1 } = query;

var { category_id: category_id } = query;

var { category_id: category_alias } = query;

var { category_id: categoryId, ...other_props } = query;

ignoreDestructuring: true

Примеры неправильного кода для этого правила с "^[^_]+$", { "ignoreDestructuring": true } параметром:

Открыть в Playground
/*eslint id-match: [2, "^[^_]+$", { "ignoreDestructuring": true }]*/

var { category_id: category_alias } = query;

var { category_id, ...other_props } = query;

Примеры правильного кода для этого правила с "^[^_]+$", { "ignoreDestructuring": true } параметром:

Открыть в Playground
/*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

Spec-Zone.ru

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