说我想法:
1、我以前用过命名方式 btn_saveFile:btn_:代表按钮,saveFile代表动作
但AI分析,不符合命名规范btn_和驼峰混用了
总结
- btn_saveFile 核心问题是混用下划线 + 小驼峰,不符合前端命名规范;
- HTML/CSS 中必须改为纯 kebab-case:btn-save-file(完整)或 btn-save(简洁);
- JS 中对应变量 / 函数用 camelCase:saveFileBtn、onSaveFileClick();
- 前端命名核心是「场景内统一」:HTML/CSS 用 kebab-case,JS 用 camelCase,绝不混用多风格。
我可以考虑改成 btn-save-file 这种命名,但我还有一个需求场景btnTwo_saveFile,就是同一个按钮,两个地方展示。
AI给的建议:
btn_saveFile btnTwo_saveFile 这两个命名(同一个意义的按钮)
你提到的 btn_saveFile 和 btnTwo_saveFile 是指代「同一个意义但不同实例」的按钮命名,核心问题是风格混用 + 序号表达不规范,我会帮你梳理出「统一风格 + 语义清晰」的规范命名方案,既保持两个按钮的关联性,又符合前端命名规则。
一、先明确核心问题(两个命名的共性问题)
- 风格混乱:同时混用下划线(_)、驼峰(saveFile/Two),不符合 HTML/CSS 通用的 kebab-case 规范;
- 序号表达模糊:Two 是英文单词,不如数字 2 直观,且 btnTwo 易被误解为「双功能按钮」而非「第二个按钮」;
- 关联性弱:两个命名仅靠 Two 区分,语义上未体现「同属保存文件按钮」的关联。
二、规范命名方案(推荐 2 种,按需选择)
方案 1:数字序号区分(简单直接,适合按钮数量少的场景)
遵循「基础名 + 序号」的结构,统一用 kebab-case(HTML/CSS)+ camelCase(JS),既保持关联又清晰区分:
场景 | 原命名 | 规范命名 | 代码示例 |
HTML ID | btn_saveFile | btn-save-file-1 | |
HTML ID | btnTwo_saveFile | btn-save-file-2 | |
CSS 选择器 | - | #btn-save-file-1 | #btn-save-file-1 { background: #28a745; } |
JS 变量 | - | saveFileBtn1 | const saveFileBtn1 = document.getElementById("btn-save-file-1"); |
JS 函数 | - | onSaveFile1Click | function onSaveFile1Click() { /* 第一个保存按钮逻辑 */ } |
方案 2:功能语义区分(更优,适合按钮有不同细分功能的场景)
避免数字序号(新增 / 删除按钮时需改序号),用「基础名 + 功能描述」区分,语义更稳定:
场景 | 原命名 | 规范命名 | 代码示例 |
HTML ID | btn_saveFile | btn-save-file-primary | |
HTML ID | btnTwo_saveFile | btn-save-file-secondary | |
CSS 选择器 | - | #btn-save-file-primary | #btn-save-file-secondary { margin-left: 10px; } |
JS 变量 | - | saveFileBtnPrimary | const saveFileBtnSecondary = document.getElementById("btn-save-file-secondary");
|
JS 函数 | - | onSaveFilePrimaryClick | function onSaveFileSecondaryClick() { /* 备用保存按钮逻辑 */ } |
其他功能描述参考(按需选):
- 本地保存 vs 云端保存:btn-save-file-local / btn-save-file-cloud
- 批量保存 vs 单条保存:btn-save-file-batch / btn-save-file-single
我本来想法:
命名三段式:
1、类型:btn_,txt_
2、分组:detail(录入)、view(查看)、search(搜索)
3、字段:user-name
估计我后面的命名,参考这个规范:
变量ID的命名:
1、id:btn-search(或者 btn-view-close)
btn-search:单页面场景
input-search-name/input-detail-name:一个是搜索name,一个是保存name:组合页面场景
文件目录的命名:
db-manage:数据库管理
js文件的命名:
zx-util.js:js文件
初稿吧,先实现功能,后续研究一下大厂的源码命名,
AI提供的规范参考:
核心原则
- 语义化:名称应清晰描述其功能或内容,而不是其表现形式。
- 一致性:在整个项目乃至团队中,同类事物的命名规则应保持一致。
- 简洁性:在清晰表达意图的前提下,名称应尽可能简短。
- 避免歧义:不使用可能产生混淆的缩写或词汇。
1. 项目与目录命名
- 项目名:全小写,使用短横线分隔单词。例如:fe-online-editor。
- 目录名:
- 全小写,优先使用单数名词。
- 使用短横线分隔单词。例如:src/components/user-profile。
- 常见目录示例:src/api, src/assets, src/components, src/hooks, src/layouts, src/pages, src/utils, src/types。
2. 文件命名
- 组件文件:
- React/Vue组件:帕斯卡命名法,与组件名严格一致。例如:UserProfile.tsx, SidebarMenu.vue。
- 非单文件组件:关联的样式、逻辑、类型文件应紧随主文件。例如:
- UserProfile.tsx
- UserProfile.module.scss/ UserProfile.css
- UserProfile.hooks.ts
- UserProfile.types.ts
- 工具类/工具函数文件:使用短横线命名法。例如:format-date.js, http-request.ts。
- 配置文件:全小写,常用短横线。例如:.eslintrc.js, vue.config.js, tailwind.config.js。
- 图片/资源文件:全小写,使用短横线或下划线,建议包含描述和尺寸/状态。例如:logo-primary.svg, user-avatar-default.png, icon_close@2x.png, button_active.png。
3. 变量与函数命名
- 变量/常量:
- 使用驼峰命名法。
- 使用名词或形容词+名词。例如:userList, isLoading, MAX_COUNT。
- 布尔变量以 is, has, can, should等开头。例如:isVisible, hasPermission。
- 函数/方法:
- 使用驼峰命名法。
- 使用动词或动词+名词。清晰地表达其行为。
- 常用动词前缀约定:
- get:获取数据。getUserInfo()
- set:设置数据。setLoading(true)
- handle:处理事件。handleClick()
- fetch:发起网络请求。fetchUserList()
- on:事件回调。onSuccess, onChange
- is, has, validate:判断。isValidEmail(), hasRequiredFields()
- render:渲染UI。renderHeader()
- use:自定义Hook(React)。useToggle()
4. CSS / 样式命名
- 核心方法论:推荐 BEM(Block Element Modifier) 或其变种(如SUIT),用于解决CSS全局命名冲突和提供高可读性。
- Block(块):独立且有意义的组件。例如:.menu。
- Element(元素):块的组成部分,不能脱离块独立存在。用双下划线连接。例如:.menu__item。
- Modifier(修饰符):表示块或元素的状态或变体。用双中划线连接。例如:.menu--horizontal, .menu__item--active。
- 命名规则:
- 全小写,用短横线分隔单词(BEM内部连接符除外)。
- 避免使用样式属性命名(如 .red-text),应使用语义化命名(如 .text-error)。
- CSS-in-JS(如 styled-components):组件内的样式变量名也应遵循语义化和驼峰规则。
5. 分支与提交命名
- Git分支名:
- 类型:feat/, fix/, docs/, style/, refactor/, test/, chore/
- 描述:短横线分隔,简明扼要。
- 示例:feat/add-user-login, fix/button-click-bug, docs/update-readme。
- Git提交信息:
- 遵循 Conventional Commits 规范。
- 格式:
( ): 。 - 示例:
- feat(auth): 新增微信扫码登录功能
- fix(router): 修复页面跳转后导航高亮错误
- docs: 更新项目启动说明
6. 工程化与工具约定
- 组件 Props:使用驼峰命名法。在模板(Vue/React)中传递时,若框架要求(如Vue),使用短横线格式。
- 自定义事件:使用短横线命名法。例如:form-submit, item-delete。
- TypeScript:
- 接口:前缀 I已非强制,推荐直接使用帕斯卡命名。例如:UserProfile, ApiResponse。
- 枚举:帕斯卡命名,成员使用全大写和下划线。例如:enum UserRole { ADMIN, GUEST }或 enum HttpCode { OK = 200, NOT_FOUND = 404 }。
- 常量:全大写,下划线分隔。定义在模块顶层或独立文件。例如:export const API_TIMEOUT = 10000;。
总结与执行建议
- 文档化:将本规范放在团队共享的文档(如Wiki)或项目根目录的 CONTRIBUTING.md文件中。
- 工具化:使用 ESLint、Stylelint、Prettier 等工具自动化检查和格式化代码,将规则沉淀到配置中。
- Code Review:在代码审查中,将命名规范作为重要检查项。
- 保持进化:规范应随技术栈和团队需求适度调整,定期回顾。
遵循这套规范,能显著提升代码的自解释性,让新人更快上手,也让未来的你感谢现在的自己。希望这份指南对你有所帮助!
