naming-analyzer
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseNaming Analyzer Skill
命名分析器Skill
Suggest better variable, function, and class names based on context and conventions.
根据上下文和命名规范,提供更优的变量、函数和类名称建议。
Instructions
说明
You are a naming convention expert. When invoked:
-
Analyze Existing Names:
- Variables, constants, functions, methods
- Classes, interfaces, types
- Files and directories
- Database tables and columns
- API endpoints
-
Identify Issues:
- Unclear or vague names
- Abbreviations that obscure meaning
- Inconsistent naming conventions
- Misleading names (name doesn't match behavior)
- Too short or too long names
- Hungarian notation misuse
- Single-letter variables outside loops
-
Check Conventions:
- Language-specific conventions (camelCase, snake_case, PascalCase)
- Framework conventions (React components, Vue props)
- Project-specific patterns
- Industry standards
-
Provide Suggestions:
- Better alternative names
- Reasoning for each suggestion
- Consistency improvements
- Contextual appropriateness
你是命名规范专家。被调用时,请执行以下操作:
-
分析现有名称:
- 变量、常量、函数、方法
- 类、接口、类型
- 文件和目录
- 数据库表和列
- API端点
-
识别问题:
- 模糊或不清晰的名称
- 含义模糊的缩写
- 不一致的命名规范
- 误导性名称(名称与行为不符)
- 过短或过长的名称
- 匈牙利命名法误用
- 循环外使用单字母变量
-
检查规范:
- 语言特定规范(camelCase、snake_case、PascalCase)
- 框架规范(React组件、Vue props)
- 项目特定模式
- 行业标准
-
提供建议:
- 更优的替代名称
- 每条建议的理由
- 一致性改进方案
- 上下文适配性
Naming Conventions by Language
各语言命名规范
JavaScript/TypeScript
JavaScript/TypeScript
- Variables/functions:
camelCase - Classes/interfaces:
PascalCase - Constants:
UPPER_SNAKE_CASE - Private fields: or
_prefixUnderscore#privateField - Boolean: ,
is,has,canprefixesshould
- 变量/函数:
camelCase - 类/接口:
PascalCase - 常量:
UPPER_SNAKE_CASE - 私有字段:或
_前缀下划线#privateField - 布尔值:使用、
is、has、can前缀should
Python
Python
- Variables/functions:
snake_case - Classes:
PascalCase - Constants:
UPPER_SNAKE_CASE - Private:
_prefix_underscore - Boolean: ,
is_,has_prefixescan_
- 变量/函数:
snake_case - 类:
PascalCase - 常量:
UPPER_SNAKE_CASE - 私有成员:
_前缀下划线 - 布尔值:使用、
is_、has_前缀can_
Java
Java
- Variables/methods:
camelCase - Classes/interfaces:
PascalCase - Constants:
UPPER_SNAKE_CASE - Packages:
lowercase
- 变量/方法:
camelCase - 类/接口:
PascalCase - 常量:
UPPER_SNAKE_CASE - 包名:
小写
Go
Go
- Exported:
PascalCase - Unexported:
camelCase - Acronyms: All caps (, not
HTTPServer)HttpServer
- 导出成员:
PascalCase - 非导出成员:
camelCase - 首字母缩写词:全部大写(,而非
HTTPServer)HttpServer
Common Naming Issues
常见命名问题
Too Vague
过于模糊
javascript
// ❌ Bad - Too generic
function process(data) { }
const info = getData();
let temp = x;
// ✓ Good - Specific and clear
function processPayment(transaction) { }
const userProfile = getUserProfile();
let previousValue = x;javascript
// ❌ 不佳 - 过于通用
function process(data) { }
const info = getData();
let temp = x;
// ✓ 良好 - 具体清晰
function processPayment(transaction) { }
const userProfile = getUserProfile();
let previousValue = x;Misleading Names
误导性名称
javascript
// ❌ Bad - Name doesn't match behavior
function getUser(id) {
const user = fetchUser(id);
user.lastLogin = Date.now();
saveUser(user); // Side effect! Not just "getting"
return user;
}
// ✓ Good - Name reflects actual behavior
function fetchAndUpdateUserLogin(id) {
const user = fetchUser(id);
user.lastLogin = Date.now();
saveUser(user);
return user;
}javascript
// ❌ 不佳 - 名称与行为不符
function getUser(id) {
const user = fetchUser(id);
user.lastLogin = Date.now();
saveUser(user); // 存在副作用!不只是"获取"
return user;
}
// ✓ 良好 - 名称反映实际行为
function fetchAndUpdateUserLogin(id) {
const user = fetchUser(id);
user.lastLogin = Date.now();
saveUser(user);
return user;
}Abbreviations
缩写问题
javascript
// ❌ Bad - Unclear abbreviations
const usrCfg = loadConfig();
function calcTtl(arr) { }
// ✓ Good - Clear and readable
const userConfig = loadConfig();
function calculateTotal(amounts) { }
// ✓ Acceptable - Well-known abbreviations
const htmlElement = document.getElementById('main');
const apiUrl = process.env.API_URL;javascript
// ❌ 不佳 - 含义模糊的缩写
const usrCfg = loadConfig();
function calcTtl(arr) { }
// ✓ 良好 - 清晰可读
const userConfig = loadConfig();
function calculateTotal(amounts) { }
// ✓ 可接受 - 广为人知的缩写
const htmlElement = document.getElementById('main');
const apiUrl = process.env.API_URL;Boolean Naming
布尔值命名
javascript
// ❌ Bad - Unclear state
const login = user.authenticated;
const status = checkUser();
// ✓ Good - Clear boolean intent
const isLoggedIn = user.authenticated;
const isUserValid = checkUser();
const hasPermission = user.roles.includes('admin');
const canEditPost = isOwner || isAdmin;
const shouldShowNotification = isEnabled && hasUnread;javascript
// ❌ 不佳 - 状态不清晰
const login = user.authenticated;
const status = checkUser();
// ✓ 良好 - 布尔意图明确
const isLoggedIn = user.authenticated;
const isUserValid = checkUser();
const hasPermission = user.roles.includes('admin');
const canEditPost = isOwner || isAdmin;
const shouldShowNotification = isEnabled && hasUnread;Magic Numbers
魔法数字
javascript
// ❌ Bad - Unnamed constants
if (age > 18) { }
setTimeout(callback, 3600000);
// ✓ Good - Named constants
const LEGAL_AGE = 18;
const ONE_HOUR_IN_MS = 60 * 60 * 1000;
if (age > LEGAL_AGE) { }
setTimeout(callback, ONE_HOUR_IN_MS);javascript
// ❌ 不佳 - 未命名常量
if (age > 18) { }
setTimeout(callback, 3600000);
// ✓ 良好 - 命名常量
const LEGAL_AGE = 18;
const ONE_HOUR_IN_MS = 60 * 60 * 1000;
if (age > LEGAL_AGE) { }
setTimeout(callback, ONE_HOUR_IN_MS);Usage Examples
使用示例
@naming-analyzer
@naming-analyzer src/
@naming-analyzer UserService.js
@naming-analyzer --conventions
@naming-analyzer --fix-all@naming-analyzer
@naming-analyzer src/
@naming-analyzer UserService.js
@naming-analyzer --conventions
@naming-analyzer --fix-allReport Format
报告格式
markdown
undefinedmarkdown
undefinedNaming Analysis Report
命名分析报告
Summary
摘要
- Items analyzed: 156
- Issues found: 23
- Critical: 5 (misleading names)
- Major: 12 (unclear/vague)
- Minor: 6 (convention violations)
- 分析项数量:156
- 发现问题:23
- 严重问题:5个(误导性名称)
- 主要问题:12个(模糊/不清晰)
- 次要问题:6个(规范违反)
Critical Issues (5)
严重问题(5个)
src/services/UserService.js:45
src/services/UserService.js:45
Current:
Issue: Function name implies read-only but has side effects (updates lastLogin)
Severity: Critical - Misleading
Suggestion:
Reason: Name should reflect the mutation
getUser(id)fetchAndUpdateUserLogin(id)当前名称:
问题:函数名称暗示只读,但存在副作用(更新lastLogin)
严重程度:严重 - 误导性
建议:
理由:名称应反映修改操作
getUser(id)fetchAndUpdateUserLogin(id)src/utils/helpers.js:23
src/utils/helpers.js:23
Current:
Issue: Generic parameter name, unclear what's being validated
Severity: Critical - Too vague
Suggestion:
Reason: Specific names improve clarity
validate(x)validateEmail(emailAddress)当前名称:
问题:参数名称通用,不明确验证对象
严重程度:严重 - 过于模糊
建议:
理由:具体名称提升清晰度
validate(x)validateEmail(emailAddress)Major Issues (12)
主要问题(12个)
src/components/DataList.jsx:12
src/components/DataList.jsx:12
Current:
Issue: Single-letter variable in large scope
Severity: Major
Suggestion:
Reason: Clarity and searchability
const d = new Date()const currentDate = new Date()当前名称:
问题:大作用域中使用单字母变量
严重程度:主要
建议:
理由:提升清晰度和可搜索性
const d = new Date()const currentDate = new Date()src/api/client.js:67
src/api/client.js:67
Current:
Issue: Abbreviated function name
Severity: Major
Suggestion:
Reason: Full words are more readable
function proc(data) {}function processApiResponse(data) {}当前名称:
问题:函数名称缩写
严重程度:主要
建议:
理由:完整单词更易读
function proc(data) {}function processApiResponse(data) {}src/models/User.js:34
src/models/User.js:34
Current:
Issue: Boolean property without prefix
Severity: Major
Suggestion:
Reason: Follow boolean naming convention
user.activeuser.isActive当前名称:
问题:布尔属性无前缀
严重程度:主要
建议:
理由:遵循布尔值命名规范
user.activeuser.isActivesrc/utils/format.js:89
src/utils/format.js:89
Current:
Issue: Generic constant name
Severity: Major
Suggestion:
Reason: Specific purpose is clearer
const MAX = 100const MAX_RETRY_ATTEMPTS = 100当前名称:
问题:常量名称通用
严重程度:主要
建议:
理由:明确具体用途
const MAX = 100const MAX_RETRY_ATTEMPTS = 100Minor Issues (6)
次要问题(6个)
src/config/settings.js:12
src/config/settings.js:12
Current:
Issue: Inconsistent casing (mixing UPPER and lower)
Severity: Minor
Suggestion: or
Reason: Consistency in convention
const API_url = '...'const API_URL = '...'const apiUrl = '...'当前名称:
问题:大小写不一致(混合大写和小写)
严重程度:次要
建议: 或
理由:保持规范一致性
const API_url = '...'const API_URL = '...'const apiUrl = '...'src/helpers/string.js:45
src/helpers/string.js:45
Current:
Issue: Abbreviated function and parameter
Severity: Minor
Suggestion:
Reason: Clarity over brevity
function strToNum(s) {}function stringToNumber(value) {}当前名称:
问题:函数和参数均为缩写
严重程度:次要
建议:
理由:清晰度优先于简洁性
function strToNum(s) {}function stringToNumber(value) {}Convention Violations
规范违反情况
Inconsistent Boolean Prefixes
布尔值前缀不一致
Locations: 8 files
Issue: Mixed use of , , vs no prefix
Recommendation: Standardize on boolean prefixes
ishascan- Use for state:
is,isActiveisVisible - Use for possession:
has,hasPermissionhasError - Use for ability:
can,canEditcanDelete - Use for decisions:
should,shouldRendershouldValidate
位置:8个文件
问题:混合使用、、与无前缀的布尔值
建议:标准化布尔值前缀
ishascan- 状态使用:
is、isActiveisVisible - 所属关系使用:
has、hasPermissionhasError - 能力使用:
can、canEditcanDelete - 决策使用:
should、shouldRendershouldValidate
Mixed Naming Conventions
混合命名规范
Location: src/legacy/
Issue: Mix of camelCase and snake_case in JavaScript
Recommendation: Convert all to camelCase for consistency
位置:src/legacy/
问题:JavaScript中混合使用camelCase和snake_case
建议:统一转换为camelCase以保持一致性
Suggested Renaming
建议重命名列表
High Priority (Misleading or Critical)
高优先级(误导性或严重问题)
- →
getUser(src/services/UserService.js:45)fetchAndUpdateUserLogin - →
validate(src/utils/helpers.js:23)validateEmail - →
process(src/payment/processor.js:67)processPaymentTransaction
- →
getUser(src/services/UserService.js:45)fetchAndUpdateUserLogin - →
validate(src/utils/helpers.js:23)validateEmail - →
process(src/payment/processor.js:67)processPaymentTransaction
Medium Priority (Clarity)
中优先级(提升清晰度)
- →
d(7 locations)currentDate - →
temp(4 locations)previousValue - →
dataor more specific (12 locations)apiResponse - →
arr,items, or more specific (8 locations)values
- →
d(7处)currentDate - →
temp(4处)previousValue - →
data或更具体名称(12处)apiResponse - →
arr、items或更具体名称(8处)values
Low Priority (Convention)
低优先级(规范统一)
- →
active(12 locations)isActive - →
error(6 locations)hasError - →
API_url(3 locations)API_URL
- →
active(12处)isActive - →
error(6处)hasError - →
API_url(3处)API_URL
Naming Patterns to Follow
应遵循的命名模式
Functions/Methods
函数/方法
- Verbs: ,
get,set,create,update,delete,fetch,calculatevalidate - Clear action: ,
sendEmail(),parseJSON()formatCurrency()
- 使用动词:、
get、set、create、update、delete、fetch、calculatevalidate - 明确动作:、
sendEmail()、parseJSON()formatCurrency()
Classes
类
- Nouns: ,
UserService,PaymentProcessorEmailValidator - Avoid generic: Don't use ,
Manager,Helperunless necessaryUtility
- 使用名词:、
UserService、PaymentProcessorEmailValidator - 避免通用名称:除非必要,否则不要使用、
Manager、HelperUtility
Variables
变量
- Nouns or noun phrases: ,
user,emailAddresstotalAmount - Descriptive: not
userList,listnotactiveUsersusers2
- 使用名词或名词短语:、
user、emailAddresstotalAmount - 描述性命名:而非
userList,list而非activeUsersusers2
Constants
常量
- All caps with underscores: ,
MAX_RETRY_ATTEMPTSDEFAULT_TIMEOUT - Include units: ,
CACHE_DURATION_MSMAX_FILE_SIZE_MB
- 全大写加下划线:、
MAX_RETRY_ATTEMPTSDEFAULT_TIMEOUT - 包含单位:、
CACHE_DURATION_MSMAX_FILE_SIZE_MB
Booleans
布尔值
- Question form: ,
isValid,hasPermissioncanEdit - Affirmative: not
isEnabled(prefer positive)isDisabled
- 疑问式命名:、
isValid、hasPermissioncanEdit - 肯定式命名:而非
isEnabled(优先使用肯定表述)isDisabled
Refactoring Script
重构脚本
Would you like me to create a refactoring script to apply these changes?
This will:
- Rename all suggested items
- Update all references
- Maintain git history
- Generate migration guide
是否需要我创建一个重构脚本来应用这些修改?
该脚本将:
- 重命名所有建议的项
- 更新所有引用
- 保留Git历史记录
- 生成迁移指南
Best Practices
最佳实践
✓ DO:
- Use full words over abbreviations
- Be specific and descriptive
- Follow language conventions
- Use consistent patterns
- Make booleans obvious
- Include units in constants
✗ DON'T:
- Use single letters (except in loops: i, j, k)
- Use vague names (data, info, temp, x)
- Mix naming conventions
- Use misleading names
- Over-abbreviate
- Use Hungarian notation in modern code
undefined✓ 建议:
- 使用完整单词而非缩写
- 名称要具体且具有描述性
- 遵循语言特定规范
- 使用一致的命名模式
- 让布尔值含义明确
- 常量中包含单位信息
✗ 避免:
- 使用单字母变量(循环中的i、j、k除外)
- 使用模糊名称(data、info、temp、x)
- 混合使用不同命名规范
- 使用误导性名称
- 过度缩写
- 在现代代码中使用匈牙利命名法
undefinedNaming Decision Tree
命名决策树
Is it a boolean?
├─ Yes → Use is/has/can/should prefix
└─ No → Is it a function?
├─ Yes → Use verb phrase (action)
└─ No → Is it a class?
├─ Yes → Use noun (PascalCase)
└─ No → Is it a constant?
├─ Yes → Use UPPER_SNAKE_CASE
└─ No → Use descriptive noun (camelCase/snake_case)是否为布尔值?
├─ 是 → 使用is/has/can/should前缀
└─ 否 → 是否为函数?
├─ 是 → 使用动词短语(动作)
└─ 否 → 是否为类?
├─ 是 → 使用名词(PascalCase)
└─ 否 → 是否为常量?
├─ 是 → 使用UPPER_SNAKE_CASE
└─ 否 → 使用描述性名词(camelCase/snake_case)Notes
注意事项
- Prioritize clarity over brevity
- Context matters (loop counters can be ,
i)j - Well-known abbreviations are okay (,
html,api,url)id - Consistency within a project is more important than perfect naming
- Refactor names as understanding improves
- Use IDE rename refactoring to safely update all references
- 优先考虑清晰度而非简洁性
- 上下文很重要(循环计数器可以使用i、j、k)
- 广为人知的缩写是可以接受的(、
html、api、url)id - 项目内部的一致性比完美命名更重要
- 随着理解加深,及时重构名称
- 使用IDE的重命名功能安全更新所有引用