Skip to content

项目编码规范

本文档定义了 Forge Admin 项目的编码规范和约定,所有贡献者应严格遵守。

命名规范

类型规则示例
类名大驼峰,见名知意UserService, OrderController
方法名小驼峰,动词开头getUserById(), createOrder()
常量全大写下划线分隔MAX_RETRY_COUNT, DEFAULT_TIMEOUT
抽象类AbstractBase 开头BaseEntity, AbstractHandler
测试类以被测类名开头 + Test 结尾UserServiceTest

禁止:使用拼音或中英文混拼命名。

异常处理

规则说明
业务异常使用 BusinessException,携带错误码
系统异常向上抛出,由 GlobalExceptionHandler 统一兜底
禁止吞异常不允许空的 catch 块
catch 中必须记录日志使用 log.error() 记录完整堆栈

全局异常处理

项目通过 @RestControllerAdvice + @ExceptionHandler 实现统一异常处理,覆盖以下异常类型:

  • BusinessException → 返回业务错误信息
  • MethodArgumentNotValidException → 参数校验失败
  • ConstraintViolationException → 约束违反
  • AccessDeniedException → 权限不足
  • NullPointerException → 空指针异常
  • 其他 RuntimeException / Exception → 系统内部错误

所有异常统一返回 RespInfo 格式。

日志规范

场景级别要求
Controller 入口INFO包含请求关键参数
异常ERROR包含完整堆栈
调试信息DEBUG仅在开发环境开启

禁止:在日志中打印用户敏感信息(手机号、身份证、银行卡等)。

通用约定

  • 幂等性:所有写接口必须考虑幂等性
  • 并发安全:涉及并发场景必须说明同步策略
  • 魔法值:必须定义为常量

数据库规范

规则说明
字符集utf8mb4
引擎InnoDB
审计字段所有业务表必须包含 id, tenant_id, create_by, create_time, create_dept, update_by, update_time
索引频繁查询的字段必须创建索引,复合索引遵循最左前缀原则

金额与时间规范

类型规则
金额使用 long 类型,单位为
时间统一使用 LocalDateTime

外部接口调用

  • 必须设置超时时间(默认 3s
  • 必须做降级处理

状态变更

  • 必须通过状态机,禁止直接 set 状态字段
  • 涉及状态流转的逻辑必须检查状态机合法性

Git 提交规范

规则说明
分支禁止 master 分支变更,必须使用 feature 分支
Commit 频率每个 task/fix 完成后自动 commit
Commit 质量每次提交必须保证编译通过
Push禁止自动 push,由用户手动触发

Commit Message 格式

[<变更名>] <中文简述>

示例

[idempotent-refactor] 重构幂等模块,支持多策略和 Redisson 分布式锁
[client-management] 新增客户端管理功能

按钮样式规范

前端操作按钮使用 UnoCSS 语义化颜色类进行区分:

颜色类颜色适用场景
text-primary蓝色编辑、查看、授权等主要操作
text-info灰蓝色查看详情、在线用户、统计信息等
text-warning黄色刷新缓存、重置、封禁等警告操作
text-error红色删除、强制下线等危险操作
text-success绿色启用、发布、通过等成功操作

使用示例

vue
<template #table-action="{ row }">
  <a class="text-primary cursor-pointer hover:text-primary-hover">编辑</a>
  <a class="text-info cursor-pointer hover:text-info-hover">在线用户</a>
  <a class="text-warning cursor-pointer hover:text-warning-hover">刷新缓存</a>
  <a class="text-error cursor-pointer hover:text-error-hover">删除</a>
</template>

规则:同一行的操作按钮应使用不同颜色区分,保证一眼可辨识。

安全红线

代码安全

  • ❌ 禁止在代码中硬编码密钥、AK/SK、数据库密码
  • ❌ 禁止提交包含用户个人信息的测试数据
  • ❌ 禁止在日志中打印手机号、身份证、银行卡等敏感信息

业务安全

  • ⚠️ 涉及资金变更 → 必须在 Spec 中标注,人工审查后方可编码
  • ⚠️ 涉及状态流转 → 必须检查状态机合法性
  • ⚠️ 涉及权限变更 → 必须显式校验操作人权限

常用注解

注解包路径说明
@ApiEncrypt / @ApiDecryptcore.annotation.cryptoAPI 请求/响应加解密
@OperationLogcore.annotation.log操作日志记录
@ApiPermissionIgnorecore.annotation.api跳过权限校验
@IgnoreTenantcore.annotation.tenant跳过租户隔离
@RefreshScopecore.annotation.config动态配置刷新
@Idempotentstarter.idempotent分布式幂等
@FlowBindflow.client绑定流程模型
@FlowStartflow.client自动启动流程
@FlowCallbackflow.client流程事件回调