6.7 KiB
6.7 KiB
name, overview, todos
| name | overview | todos | |||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 局部变量resp-req重命名为全称 | 将项目中作为局部变量/函数参数的缩写 resp、req 统一重命名为 response、request,不改动 Dao 字段与 Go 惯用短名,不触碰 c.Request/http.Request 等标准库字段,保证编译与 vet 通过、对外行为不变。 |
|
需求概述
将项目中作为局部变量与函数参数的缩写标识符 resp、req 统一重命名为全称 response、request,提升代码可读性与命名一致性。这是纯内部命名重构,不改变任何对外行为。
明确边界(已与用户确认)
- 要改:
resp → response、req → request(仅限局部变量/函数参数标识符) - 保留不改:
- service 中的
xxxDao字段(Dao为领域专有缩写) - Go 惯用短名:
ctx、err、ok、db、id、tx、循环变量i等 - 所有类型名/导出符号:
dto.XxxRequest、dto.XxxResponse、app.Response、app.NewResponse、ToResponse、ToErrorResponse、ResponseFormat、chatResponse、FortuneResponse等 - 标准库/框架字段:
c.Request、http.Request、c.Request.Context() - 含
req/resp的完整标识符:RequestID、GetRequestID、requestIDKey、ShouldBindQuery、responseFormat等
验收标准
- 项目内不再有名为
resp/req的独立局部变量/参数标识符 - 上述排除项完全未被改动
go build ./...、go vet ./...通过,对外 HTTP 行为、DTO JSON tag、路由完全不变
技术方案
重构策略
采用逐文件、按 Go 标识符词边界精确替换的方式(\bresp\b → response、\breq\b → request),仅作用于变量声明、赋值与引用位置。优先使用 LSP 作用域内重命名(rename symbol)保证不跨作用域误伤;对形态高度统一的 handler 文件可按文件精确替换后逐一校验。
命中范围(已通过 search_content 统计确认)
handler 层(internal/routers/api/v1/*.go,形态统一):
resp := app.NewResponse(c)→response := app.NewResponse(c),后续resp.ToResponse(...)/resp.ToErrorResponse(...)同步更新var req dto.XxxRequest、req.XxxUUID = c.Param(...)、&req→ 全部改为request
service 层(internal/service/*.go):
- 方法参数名
req *dto.XxxRequest→request *dto.XxxRequest,函数体内引用同步更新 - 局部
resp(如horoscope.go、user.go组装响应处)→response
middleware / pkg:
internal/middleware/lzcwyjwt.go的resp := app.NewResponse(c)pkg/wechat/*、pkg/errcode、pkg/app等如有名为req/resp的局部变量/参数,一并处理(以实际命中为准)
关键防回归点
\breq\b(小写+词边界)天然不匹配c.Request(大写 R)、RequestID、requestIDKey、ShouldBindQuery,但替换时须逐处确认无误伤\bresp\b不匹配ResponseFormat、responseFormat、chatResponse、FortuneResponse、RecommendLLMResponse,保持不动- 类型名
dto.*Request/dto.*Response、app.Response/app.NewResponse/ToResponse等导出符号绝不改动 - 替换后须确认无与既有
response/request标识符的命名冲突(当前代码未发现同名局部变量)
涉及文件清单(预估,以实际命中为准)
internal/routers/api/v1/
├── user.go # [MODIFY] resp/req → response/request
├── quota.go # [MODIFY] 同上
├── horoscope.go # [MODIFY] 同上
├── clothes.go # [MODIFY] 同上(含 multipart 分支)
├── outfit.go # [MODIFY] 同上(命中较多)
├── closet.go # [MODIFY] 同上
├── collect.go # [MODIFY] 同上
├── like.go # [MODIFY] 同上
├── notification.go # [MODIFY] 同上
├── goods.go # [MODIFY] 同上
├── order.go # [MODIFY] 同上(含回调 handler)
└── airecommend.go # [MODIFY] 同上
internal/service/
├── user.go / quota.go / horoscope.go / clothes.go / outfit.go
├── closet.go / collect.go / like.go / notification.go
├── goods.go / order.go / airecommend.go # [MODIFY] 参数名 req→request、局部 resp→response
internal/middleware/
└── lzcwyjwt.go # [MODIFY] resp → response
pkg/
├── wechat/mini.go, wechat/pay.go # [MODIFY] 按实际命中的局部 req/resp
└── errcode/*, app/* # [CHECK] 按实际命中处理,类型/方法名不动
验证方式
gofmt -l无格式问题go build ./...、go vet ./...通过- grep 复核:无残留作为独立标识符的
\bresp\b/\breq\b局部变量;c.Request、RequestID、dto.*Request、dto.*Response、ResponseFormat等未被改动
Agent Extensions
SubAgent
- code-explorer
- Purpose:在重构前对全仓库
\bresp\b、\breq\b做精确命中普查,产出「文件 → 行号 → 上下文」清单,并甄别需排除的完整标识符(RequestID、c.Request、ResponseFormat 等),确保不漏改、不误伤。 - Expected outcome:得到完整、去噪后的待改点清单,作为逐文件重命名的依据。
Skill
- lsp-code-analysis
- Purpose:对
req/resp局部变量与函数参数执行 LSP 作用域内 rename(含引用点同步更新)与改前引用预览,避免跨作用域误改。 - Expected outcome:每个
resp/req标识符在其作用域内被安全重命名为response/request,所有引用一致更新。