# id-match

要求标识符匹配指定的正则表达式

"There are only two hard things in Computer Science: cache invalidation and naming things." — Phil Karlton

在项目中一致地命名事物是代码创建的一个经常被低估的方面。如果做得正确,它可以为您的团队节省不必要的头疼和误导时间。此规则允许您精确定义和强制执行团队应使用的变量和函数名称。不再局限于 camelCase、snake_case、PascalCase 或 oHungarianNotation。id-match 满足您的所有需求!

# 规则详情

此规则要求分配和 function 定义中的标识符与指定的正则表达式匹配。

# 选项

此规则具有指定正则表达式的字符串选项。

例如,要强制执行驼峰命名约定:

{
    "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 my_favorite_color = "#112C85";
var _myFavoriteColor  = "#112C85";
var myFavoriteColor_  = "#112C85";
var MY_FAVORITE_COLOR = "#112C85";
function do_something() {
    // ...
}

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

class My_Class {}

class myClass {
    do_something() {}
}

class myClass {
    #do_something() {}
}

此规则使用 "^[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 myClass {
    doSomething() {}
}

class myClass {
    #doSomething() {}
}

此规则有一个对象选项:

  • "properties": false(默认)不检查对象属性
  • "properties": true 要求对象字面量属性和成员表达式赋值属性匹配指定的正则表达式
  • "classFields": false(默认)不分类字段名
  • "classFields": true 要求类字段名匹配指定的正则表达式
  • "onlyDeclarations": false(默认)要求所有变量名匹配指定的正则表达式
  • "onlyDeclarations": true 只需要 varfunctionclass 声明来匹配指定的正则表达式
  • "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 }]*/

var obj = {
    my_pref: 1
};

# classFields

此规则使用 "^[a-z]+([A-Z][a-z]+)*$", { "classFields": true } 选项的错误代码示例:

/*eslint id-match: ["error", "^[a-z]+([A-Z][a-z]+)*$", { "properties": true }]*/

class myClass {
    my_pref = 1;
}

class myClass {
    #my_pref = 1;
}

# onlyDeclarations

此规则使用 "^[a-z]+([A-Z][a-z]+)*$", { "onlyDeclarations": true } 选项的正确代码示例:

/*eslint id-match: [2, "^[a-z]+([A-Z][a-z]+)*$", { "onlyDeclarations": true }]*/

do_something(__dirname);

# ignoreDestructuring: false

此规则使用默认 "^[^_]+$", { "ignoreDestructuring": false } 选项的错误代码示例:

/*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 } 选项的错误代码示例:

/*eslint id-match: [2, "^[^_]+$", { "ignoreDestructuring": true }]*/

var { category_id: category_alias } = query;

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

此规则使用 "^[^_]+$", { "ignoreDestructuring": true } 选项的正确代码示例:

/*eslint id-match: [2, "^[^_]+$", { "ignoreDestructuring": true }]*/

var { category_id } = query;

var { category_id = 1 } = query;

var { category_id: category_id } = query;

# 何时不使用

如果您不想对所有标识符强制执行任何特定的命名约定,或者您的命名约定过于复杂而无法通过配置此规则来强制执行,那么您不应启用此规则。

Last Updated: 5/13/2023, 8:55:38 PM