# Go 接口契约与可维护性检查清单

## API 契约与兼容性

- 导出函数、结构体字段或接口变更是否会破坏已有调用方。
- JSON / protobuf / DB 映射字段变更是否评估向后兼容性与迁移路径。
- 错误返回、状态码和空值语义是否与历史行为保持一致或有明确升级说明。

## 类型与抽象

- 接口是否最小化，只暴露必要行为，避免为测试而设计过宽接口。
- 是否过早抽象导致实现复杂化，简单场景是否可直接使用具体类型。
- 泛型使用是否真正降低重复，约束是否清晰且不损失可读性。

## 可读性与组织

- 包边界是否清晰（`internal` / `pkg` / `cmd`），避免循环依赖与职责混乱。
- 命名是否遵循 Go 习惯并表达领域语义，避免无意义缩写。
- 函数是否过长、分支过深，是否可拆为可测试的小单元。

## 测试与变更安全

- 关键业务路径是否补充测试，尤其是边界条件和失败路径。
- 表驱动测试是否覆盖主要分支，并包含可读的 case 名称。
- 测试是否依赖不稳定外部环境，是否存在偶发失败风险。
