#项目规范 ## 技术栈 - 前端:Tauri + Vue 3 + TypeScript - 后端:Java + Spring Boot - 数据库:MS SQL Server 或 OceanBase ## 代码规范 - 函数名用 camelcase,组件名用 Pascalcase - 常量:UPPER_SNAKE_CASE - 文件名:一般 kebab-case 或与默认导出组件同名 PascalCase - 布尔值变量以 is / has / should 开头,如 isLoading - 所有函数必须有 JSDoc 注释 - 错误处理必须用 try/catch,不能用.catch() - 行尾无空白,文件末尾保留一个空行 - 一行代码不超过 100 / 120 个字符(常见 100),超长时合理换行 - 不加分号 - 普通字符串用 单引号 'hello',需要插值时用反引号模板字符串 - JSX 属性用双引号 - 严格的导入顺序:第三方库(React、axios 等)> 内部路径别名模块(如 @/components)> 相对路径模块(./utils)> 样式文件 - 禁止通配符导入(import \* as … 只在极少数必要情况) - 分组之间保留空行,同类按字母排序 - 任何有意义的数字和字符串必须提取为 命名常量 - 始终使用 === 和 !==,避免隐式类型转换带来问题 - 单一职责:一个函数只做一件事 - 长度:单个函数不超过 50 行(逻辑复杂时拆小) - 参数数量:不超过 3 个,超出时用对象参数 - 提前返回(Return Early):避免深层 if 嵌套,提高可读性 - 纯函数优先:不修改入参,避免副作用 - 所有 async/await 必须 try/catch 或附加 .catch() - 严禁空 catch 块,至少要记录日志或显式忽略并注释原因 - Promise 的拒绝必须处理(unhandled rejection 零容忍) - 所有 导出的函数、类、类型、接口、组件 必须写 JSDoc / TSDoc 注释,描述用途、参数、返回值 - 复杂逻辑用行注释解释“为什么”,而非“做什么” - 使用 // TODO: 和 // FIXME: 标记,并要求 AI 不在生产代码留大段注释掉的旧代码 - 不保留未使用的变量、导入、函数(可由 ESLint 直接检测) - 不留下 console.log 调试语句(除非严格限定的日志工具) - 一个文件一个主要导出(默认导出或单一组件),相关工具/类型可并存 - 文件总行数建议不超过 300 行(组件可适当放宽,但组件太长也要拆分) ## 禁止行为 - 禁用 var,全部使用 const / let,优先 const,只有确实需要重新赋值才用 let - 不使用 any 类型 - 不写裸 console.log,用统一的 logger - css不用内联样式 - 禁止混用 Tab,使用 2 个空格(或 4 个,项目统一即可) ## 提交规范 feat:新功能 |fix:修复| refactor:重构