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]+)*$"]*/

const my_favorite_color = "#112C85";
const _myFavoriteColor  = "#112C85";
const myFavoriteColor_  = "#112C85";
const 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]+)*$"]*/

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 }:

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

const 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;
}

onlyDeclarations

Примеры правильного кода для этого правила с параметрами "^[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 }]*/

const { category_id } = query;

const { categoryid_Default = 1 } = query;

const { category_ids: category_ids } = query;

const { category_id: category_Alias } = query;

const { category_id: category_IdRenamed, ...other_Props } = query;

ignoreDestructuring: true

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

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

const { category_id: category_alias } = query;

const { category_id: category_Id, ...other_props } = query;

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

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

Spec-Zone.ru

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