service-best-practices
Service 最佳实践
概述
在 code-arena 项目中,Service 层负责业务逻辑处理、数据转换和外部 API 集成。本技能提供编写 Service 的规范和最佳实践指导,确保代码的可维护性、可测试性和一致性。
项目数据流
前端 React 组件 → tRPC 客户端 → tRPC 路由器 → Service → DAO → Drizzle DB → PostgreSQL
核心规范
1. 文件结构
- 位置:
apps/web/src/services/ - 命名:
{feature}Service.ts - 导出:
export const {Feature}Service = { ... }
2. 依赖注入(强制)
Service 不得直接导入 db,必须通过 DAO 依赖注入。
3. 方法签名
- 驼峰命名
- 返回 Promise 类型
- 使用 Zod 验证输入
4. 错误处理
使用自定义错误类,记录日志,抛出适当错误。
5. 事务管理
Service 可发起 db.transaction(),DAO 接收可选 tx 参数。
使用指南
当创建或重构 Service 文件时:
- 遵循依赖注入模式
- 使用 Zod 验证输入
- 通过 DAO 处理数据库操作
- 实现适当错误处理和日志
- 编写测试用例
详细参考
完整的最佳实践指南请参阅 service-best-practices-guide.md,包含代码示例、模板和高级用法。
资源
- service-best-practices-guide.md:完整的 Service 编写指南
More from forge-town/skills
svg-icon-best-practice
Must follow when 管理或新增 React TypeScript 项目中的 SVG 图标组件,确保命名、封装方式和导出规范遵循项目标准规范。触发词:svg图标规范、图标组件管理、SVG图标规范审查。
46create-skills
Use when 需要创建新技能或更新现有技能,将领域知识、工作流程、脚本和工具集成打包为可复用 Skill;生成的新技能须使用中文编写。触发词:创建新技能、更新skill、新建技能包、扩展AI能力。
38zod-env-integration
Must follow when 配置类型安全的环境变量管理模块,基于 .env.example 使用 Zod 生成 env schema 和标准化管理工具。触发词:zod环境变量、env类型安全配置、环境变量schema。
38page-best-practice
Must follow when 创建或审查前端页面结构,确保遵循 Anatomy 规范,正确分离 Wrapper、Content 和 Optional Store 模块。触发词:创建页面、页面结构规范、前端页面解剖规范。
32store-best-practice
Must follow when 使用 Zustand 创建或重构状态管理 Store,确保遵循 slice 模式、Provider 设置和类型安全规范。触发词:创建store、zustand规范、状态管理最佳实践、store设计审查。
30service-best-practice
Must follow when 创建或重构 Service 层,基于 tRPC + Service + DAO 架构确保依赖注入、错误处理和业务逻辑分层符合规范。触发词:service规范、创建service层、服务层重构。
29