SuperAPI AI 工具集

coding-standards

编程与开发

查看项目

更新于 10-16 10:04

技能介绍

用途 这是一套适用于 TypeScript、JavaScript、React 和 Node.js 开发的通用编码标准、最佳实践与模式集合,可用于在多个项目中统一代码风格与工程质量。

何时启用

  • 启动新项目或模块时
  • 为了质量和可维护性进行代码审查时
  • 重构现有代码以遵循规范时
  • 强制执行命名、格式或结构的一致性时
  • 设置 linting、格式化或类型检查规则时
  • 引导新贡献者了解编码规范时

代码质量原则

  1. 可读性优先:代码被阅读的次数远多于编写的次数,变量与函数命名应清晰明确,优先选择自描述代码而非依赖注释,保持一致格式化风格。
  2. KISS:采用最简单的可行方案,避免过度设计,不进行过早优化,易于理解胜过奇技淫巧。
  3. DRY:将公共逻辑提取为函数,创建可复用组件,在模块间共享工具函数,避免复制粘贴式编程。
  4. YAGNI:不要在功能被需要之前就构建它,避免投机性的通用设计,仅在必要时增加复杂性,从简单开始按需重构。

TypeScript/JavaScript 规范

  • 变量命名:使用描述性命名(如 marketSearchQuery、isUserAuthenticated、totalRevenue),避免含义不明的 q、flag、x。
  • 函数命名:采用动词-名词模式(fetchMarketData、calculateSimilarity、isValidEmail),避免仅有名词或不清晰的命名。
  • 不可变性:始终使用展开运算符创建新对象/数组;严禁直接修改(mutate)现有对象或数组。
  • 错误处理:使用 try/catch,检查 response.ok,抛出带状态信息的错误,并避免无错误处理的异步请求。
  • Async/Await:尽可能使用 Promise.all 并行执行;避免非必要的串行等待。
  • 类型安全:定义正确的 interface 与返回类型;避免滥用 any。

React 最佳实践

  • 组件结构:使用带类型的函数式组件与显式 Props 接口,为可选属性提供默认值。
  • 自定义 Hook:以 use 开头,返回可复用逻辑(如 useDebounce)。
  • 状态管理:使用函数式更新(setCount(prev => prev + 1)),避免直接引用状态导致闭包过期。
  • 条件渲染:使用清晰的条件表达式,避免嵌套三元运算符。

API 设计规范

  • REST 约定:GET/POST/PUT/PATCH/DELETE 按资源路径组织,使用查询参数进行过滤(status、limit、offset)。
  • 响应格式:使用统一的 ApiResponse<T> 结构,包含 success、data、error、meta 等字段。
  • 输入验证:使用 zod 定义 Schema,对请求体进行验证并返回结构化错误信息。

文件组织

  • 项目结构:以 src 为根,划分 app、components、hooks、lib、types、styles 等目录,组件按 ui、forms、layouts 分类。
  • 文件命名:组件使用 PascalCase,Hook 以 use 开头使用 camelCase,工具函数使用 camelCase,类型文件带 .types 后缀。

注释与文档

  • 解释“为什么”而非“是什么”,避免陈述显而易见的事实。
  • 对公共 API 使用 JSDoc,包含参数、返回值、异常与示例。

性能最佳实践

  • 记忆化:使用 useMemo 缓存昂贵计算,useCallback 缓存回调。
  • 延迟加载:使用 lazy 与 Suspense 延迟加载大型组件。
  • 数据库查询:仅选择需要的列,避免全量查询。

测试规范

  • 使用 AAA(Arrange-Act-Assert)模式组织测试。
  • 使用描述性的测试名称,说明具体行为与预期结果,避免模糊命名。

代码异味检测 注意过长函数(超过 50 行应拆分)、过深嵌套(使用及早返回)与魔数(改为命名常量)。

限制 资料中未提供该技能的安装命令、运行环境要求、授权方式、收费信息或与其他工具的集成方式,这些事实暂未提供。