# 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
只需要var
、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 }]*/
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;
# 何时不使用
如果您不想对所有标识符强制执行任何特定的命名约定,或者您的命名约定过于复杂而无法通过配置此规则来强制执行,那么您不应启用此规则。