53 lines
1.3 KiB
Plaintext
53 lines
1.3 KiB
Plaintext
---
|
|
description:
|
|
globs:
|
|
alwaysApply: false
|
|
---
|
|
# 代码规范和最佳实践
|
|
|
|
## Go 编码规范
|
|
|
|
### 命名约定
|
|
- 使用驼峰命名法
|
|
- 包名使用小写
|
|
- 导出的标识符必须以大写字母开头
|
|
- 接口名通常以 -er 结尾,如 `Handler`、`Service` 等
|
|
|
|
### 错误处理
|
|
- 始终检查错误返回值
|
|
- 使用有意义的错误消息
|
|
- 在适当的抽象层处理错误
|
|
|
|
### 项目特定规范
|
|
|
|
#### Handler 层
|
|
参考 [handlers/admin_handler.go](mdc:handlers/admin_handler.go):
|
|
- Handler 结构体应包含所需的服务依赖
|
|
- 使用依赖注入模式初始化 Handler
|
|
- HTTP 响应应使用适当的状态码
|
|
- 统一使用 gin.H 作为模板数据传递
|
|
|
|
#### Service 层
|
|
- 实现核心业务逻辑
|
|
- 保持服务方法的单一职责
|
|
- 避免在服务层处理 HTTP 相关逻辑
|
|
|
|
#### 中间件
|
|
- 保持中间件的通用性和可重用性
|
|
- 明确记录中间件的用途和影响
|
|
- 合理使用中间件链
|
|
|
|
### 测试规范
|
|
- 为所有关键功能编写单元测试
|
|
- 使用表驱动测试方法
|
|
- 测试文件命名为 `xxx_test.go`
|
|
- 确保测试覆盖主要的成功和失败场景
|
|
|
|
### 安全最佳实践
|
|
- 所有用户输入必须经过验证
|
|
- 密码必须加密存储
|
|
- 使用 HTTPS
|
|
- 实现适当的访问控制
|
|
- 遵循 OAuth2 和 OIDC 规范的安全建议
|
|
|