ESLint plugin for personal naming conventions - supports PascalCase, camelCase, snake_case, and UPPER_SNAKE_CASE naming rules with intelligent recommendations
基于个人命名规范的ESLint插件,支持类名、类实例名、函数名、参数名、变量名、常量名等命名规范检测。





- ✅ 类名检测 - 大驼峰命名法(PascalCase)
- ✅ 类实例名检测 - 小驼峰命名法(camelCase)
- ✅ 函数名检测 - 小驼峰命名法(camelCase)
- ✅ 参数名检测 - 小写蛇形命名法(snake_case)
- ✅ 变量名检测 - 小写蛇形命名法(snake_case)
- ✅ 常量名检测 - 大写蛇形命名法(UPPER_SNAKE_CASE)
- ✅ 长度限制 - 所有命名长度限制在1-20字符
- ✅ 单词长度限制 - 每个单词限制在最大8字符
- ✅ 禁止废话词 - 避免使用Manager、Handler等冗余词汇
- ✅ 命名推荐功能 - 推荐更短的替代名称,同时保持语义不变
插件实际支持以下ESLint规则:
- mm_eslint/class-name - 类名检测
- mm_eslint/class-instance-name - 类实例名检测
- mm_eslint/function-name - 函数名检测
- mm_eslint/param-name - 参数名检测
- mm_eslint/variable-name - 变量名检测
- mm_eslint/constant-name - 常量名检测
``bash`
npm install mm_eslint --save-dev
如果您想使用本地版本,可以将插件文件复制到项目中:
`bash`复制插件文件到您的项目
cp mm_eslint/index.js your-project/eslint-plugins/
在您的ESLint配置文件中引入插件:
`javascript
// eslint.config.js
const mmEslint = require('mm_eslint');
module.exports = [
{
files: ['*/.js'],
plugins: {
mm_eslint: {
rules: mmEslint
}
},
rules: {
// 命名规范插件规则
'mm_eslint/class-name': 'error',
'mm_eslint/class-instance-name': 'error',
'mm_eslint/function-name': 'error',
'mm_eslint/param-name': 'warn',
'mm_eslint/variable-name': 'warn',
'mm_eslint/constant-name': 'error',
// 禁用与命名规范插件冲突的默认规则
camelcase: 'off',
'id-match': 'off',
'new-cap': 'off',
'id-length': 'off',
},
},
];
`
`bash验证单个文件
npx eslint your-file.js
命名规范规则
$3
- 级别: error
- 要求: 大驼峰命名法(PascalCase)
- 长度: 1-20字符
- 单词长度: 每个单词≤8字符
- 示例:
User, DbConn
- 错误示例: user, user_manager, UserManager$3
- 级别: error
- 要求: 小驼峰命名法(camelCase)
- 长度: 1-20字符
- 单词长度: 每个单词≤8字符
- 示例:
userInstance, dbConn
- 错误示例: UserInstance, db_conn, DB_CONN$3
- 级别: error
- 要求: 小驼峰命名法(camelCase)
- 长度: 1-20字符
- 单词长度: 每个单词≤8字符
- 示例:
get, getName, process
- 错误示例: Get, get_name, PROCESS$3
- 级别: warn
- 要求: 小写蛇形命名法(snake_case)
- 长度: 1-20字符
- 示例:
user_name, max_count
- 错误示例: userName, maxCount, MAX_COUNT$3
- 级别: warn
- 要求: 小写蛇形命名法(snake_case)
- 长度: 1-20字符
- 示例:
user_count, max_retry
- 错误示例: userCount, maxRetry, MAX_RETRY$3
- 级别: error
- 要求: 大写蛇形命名法(UPPER_SNAKE_CASE)
- 长度: 1-20字符
- 示例:
MAX_RETRY, DEFAULT_TIMEOUT
- 错误示例: maxRetry, defaultTimeout, DefaultTimeout错误示例
`javascript
// ❌ 错误的命名示例
class user {} // 类名应该使用 PascalCase
class user_manager {} // 类名应该使用 PascalCase
class UserManager {} // 类名应该使用 PascalCaseconst userInstance = new User(); // 类实例名应该使用 camelCase
const UserInstance = new User(); // 类实例名应该使用 camelCase
function GetUser() {} // 函数名应该使用 camelCase
function get_user() {} // 函数名应该使用 camelCase
function process(userName) {} // 参数名应该使用 snake_case
const maxRetry = 5; // 变量名应该使用 snake_case
const defaultTimeout = 1000; // 常量名应该使用 UPPER_SNAKE_CASE
// ✅ 正确的命名示例
class User {}
class DbConn {}
const userInstance = new User();
const dbConn = new DbConn();
function getUser() {}
function process() {}
function process(user_name) {}
const max_retry = 5;
const DEFAULT_TIMEOUT = 1000;
`单词长度验证
插件验证复合名称中的每个单词不超过8个字符:
- 有效:
UserService("User"=4, "Service"=7)
- 无效: UserConfiguration("Configuration"=13 > 8)
- 有效: getUser("get"=3, "User"=4)
- 无效: getConfiguration("Configuration"=13 > 8)禁止的冗余词汇
插件会自动检测并禁止使用以下冗余词汇:
类名禁止词: manager, handler, processor, controller, service, provider, factory, builder, adapter, decorator, proxy, facade, mediator, observer, strategy, command, visitor, iterator, template, flyweight, memento, interpreter, model, view, route, router, component, widget, panel, dialog, window, form, field, property, entity
函数名禁止词: data, result, output, input, param, params, parameter, parameters, value, values, item, items, process, processor, provider, builder, adapter, decorator, proxy, facade, mediator, observer, strategy, command, visitor, iterator, template, flyweight, memento, interpreter, temp, tmp, temporary, cached, buffered, idx, counter, with
变量名禁止词: object, array, map, set, collection, container, instance, data, item, items, element, elements, entry, entries, temp, tmp, temporary, cached, buffer, buffered, input, output, result, destination, index, idx, counter, length, total, sum, pointer, reference, ref, handle, handler, entity, column, property, attribute, manager, processor, controller, service, middleware, component, provider
命名推荐功能
插件包含智能命名推荐系统,建议使用更短的替代名称,同时保持语义不变。
$3
核心原则是"缩短命名而不改变语义"。推荐系统:
- 推荐更短的单词,同时保持相同含义
- 避免会改变功能的概念性变化
- 确保推荐词始终比原词短
- 保留编程特定术语和概念差异
$3
插件为常见编程操作提供推荐:
| 原词 | 推荐词 | 描述 |
| ------------ | -------- | ---------- |
|
calculate | calc | 数学运算 |
| generate | gen | 数据生成 |
| initialize | init | 初始化操作 |
| execute | exec | 命令执行 |
| process | run | 数据处理 |
| retrieve | load | 数据加载 |
| persist | save | 数据存储 |
| compare | cmp | 比较操作 |
| duplicate | copy | 数据复制 |
| transfer | move | 数据移动 |
| convert | to | 类型转换 |
| verify | check | 验证检查 |
| construct | create | 对象创建 |
| handle | run | 事件处理 |$3
`javascript
// ❌ 原词(较长名称)
function calculateTotal() {}
function generateUserData() {}
function initializeSystem() {}
function executeCommand() {}
function processData() {}// ✅ 推荐词(较短名称)
function calcTotal() {}
function genUserData() {}
function initSystem() {}
function execCommand() {}
function runData() {}
`$3
启用推荐功能后,ESLint将建议替代名称:
`bash
ESLint输出示例
function calculateTotal() {}
^ 建议使用'calc'替代'calculate'以获得更短的命名
`开发
$3
`
mm_eslint/
├── index.js # 主插件文件
├── config.js # 配置管理
├── detector.js # 命名检测器
├── validator.js # 验证器
├── corrector.js # 命名修正器
├── tip.js # 提示信息
├── util.js # 工具函数
├── handler.js # 规则处理器
├── fix.js # 自动修复功能
├── package.json # npm配置
├── eslint.config.js # ESLint配置示例
├── README.md # 中文说明文档
├── README_EN.md # 英文说明文档
├── LICENSE # 许可证
└── tests/ # 测试文件
├── success/ # 正确示例
├── error/ # 错误示例
└── scence/ # 场景测试
`$3
`bash
运行单元测试
npm test运行ESLint检查
npm run lint
`发布说明
$3
插件已发布到npm,可以通过以下命令安装:
`bash
npm install mm_eslint --save-dev
`$3
项目使用语义化版本控制(Semantic Versioning):
- 主版本号:不兼容的API修改
- 次版本号:向下兼容的功能性新增
- 修订号:向下兼容的问题修正
$3
1. 更新版本号:
npm version patch|minor|major
2. 运行测试:npm test
3. 代码检查:npm run lint
4. 发布到npm:npm publish许可证
ISC License
贡献
欢迎提交Issue和Pull Request来改进这个插件。
更新日志
$3
- 更新插件名称和规则前缀为 mm_eslint`