You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.6 KiB

#项目规范

技术栈

  • 前端: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:重构