¥
立即购买

代码审查反馈优化器

191 浏览
12 试用
3 购买
Dec 10, 2025更新

本提示词专为代码审查场景设计,通过结构化分析将技术性审查意见转化为专业、友好且具建设性的反馈语言。它强调正向表达与具体改进建议,有效提升团队沟通效率与协作氛围,适用于日常审查、新人指导等多种协作场景,帮助审查人员快速生成高质量、易接受的反馈内容。

原始意见

状态码和错误返回不统一:成功时200/201混用;失败也用200并在body里放success=false,客户端不好判断。错误信息缺少错误码与traceId,排障困难。PUT /api/v1/users/{id} 非幂等,重复请求会新增记录。GET /api/v1/users 的分页文档缺失:limit默认/上限不明,page越界返回200+空数组。资源命名不一致:/user 与 /users 并存;字段命名 snake_case 与 camelCase 混用。/users/{id}/activate 存在副作用且同步阻塞,超时/重试策略未定义。对外泄露内部字段 isDeleted、internalNote。缺少OpenAPI定义,前端只能读代码联调,错误频发。 示例: GET /api/v1/users?limit=-1 -> 200 { success:false, message:'limit invalid' } UserController.update: if (!userService.update(id, req)) { return Response.ok({ success:false, message:'update fail' }).build(); } return Response.ok(savedUser).build(); // 直接返回JPA实体

审查场景:API接口审查
反馈重点:["API设计规范","错误处理机制","文档完整性","代码可维护性"]
语气强度:专业平衡型
目标开发者背景:中级开发者
具体代码片段或上下文:相关路由: GET /api/v1/users?limit={limit}&page={page} PUT /api/v1/users/{id} POST /api/v1/users/{id}/activate 示例响应(失败却返回200): HTTP/1.1 200 OK { "success": false, "message": "update fail" } 控制器片段(Java/Spring): // 命名不一致、错误码不统一、直接暴露实体 @RestController class UserController { @PutMapping("/api/v1/users/{id}") public ResponseEntity<?> update(@PathVariable Long id, @RequestBody UserReq req) { User saved = service.saveOrCreate(id, req); // 非幂等 if (saved == null) { return ResponseEntity.ok(Map.of("success", false, "message", "update fail")); } return ResponseEntity.ok(saved); // 返回内部字段 isDeleted } } 注意:无OpenAPI文档;分页limit允许负数;/user 与 /users 并存;JSON字段大小写混用。
期望的改进方向或约束:期望在不破坏v1现有兼容性的前提下统一契约:

  • 状态码与错误体采用统一规范(建议RFC7807或统一{code,message,traceId}结构),失败不再返回200。
  • 保持现有字段不删除,可新增字段;JSON风格统一为camelCase。
  • 明确PUT幂等语义,修复重复请求导致新增的问题。
  • 补齐分页/排序参数文档与服务端校验(limit默认20,上限100)。
  • 为副作用接口定义超时与重试策略(超时2s,最多重试1次,幂等保障)。
  • 在2个工作日内提交OpenAPI 3.0规范,自动生成SDK;不引入新网关组件。

优化表达

整体功能已经比较完整,进一步在契约一致性、错误处理和文档化方面做一些轻量不破坏兼容的调整,可以显著提升客户端可用性与排障效率。下面给出分层次、可逐步落地的优化建议:在保持 v1 客户端可用的前提下,统一状态码与错误体、明确 PUT 幂等语义、完善分页规则与参数校验、对敏感字段做可控的外露管理、补齐 OpenAPI 定义,同时为存在副作用的接口提供明确的超时与重试策略。


改进建议

  1. 统一状态码与错误返回(保持 v1 兼容)
  • 方案
    • 采用 RFC7807(application/problem+json)作为错误体,扩展字段包含 code 与 traceId。示例: { "type": "https://api.example.com/problems/validation-error", "title": "Invalid request parameters", "status": 400, "detail": "limit must be between 1 and 100", "code": "USR_001", "traceId": "a1b2c3d4" }
    • 失败不再返回 200:按语义返回 4xx/5xx。为平滑过渡,错误体额外保留 success=false(扩展字段),并在响应头加入 Deprecation: true 与 Sunset:
    • 成功状态码在 v1 做“最小变更统一”:GET/PUT/POST 成功统一 200(避免引入 201 带来的潜在兼容性风险);在响应头增加 Location(针对创建场景),并在 OpenAPI 标注未来版本将改为 201。
  • 控制器/全局异常处理(Spring 6+)
    • 使用 ProblemDetail 与 @ControllerAdvice 统一异常返回;从 MDC 注入 traceId。
    • 提供错误码枚举并映射到 type 与 code。
  1. 明确 PUT 幂等语义,避免重复请求新增
  • 方案
    • 改造 service.saveOrCreate -> service.updateOnly(id, req),不存在返回 404,不再 upsert。
    • 使用数据库唯一主键与版本号字段(version)保证并发一致性;返回 ETag,并支持 If-Match。
    • 对请求重复提交的防抖:可选支持 Idempotency-Key 请求头(写入幂等表,键=用户id+key),重复请求返回相同结果(200)。
  • 代码示例(片段) @PutMapping("/api/v1/users/{id}") public ResponseEntity update(@PathVariable Long id, @Valid @RequestBody UserUpdateRequest req, @RequestHeader(value = "If-Match", required = false) String ifMatch) { if (!service.exists(id)) { throw new NotFoundException("user not found", "USR_404"); } var updated = service.updateOnly(id, req, ifMatch); // 若版本冲突抛出 412 var dto = mapper.toResponse(updated); return ResponseEntity.ok() .eTag(""" + updated.getVersion() + """) .body(dto); }
  1. 分页与排序参数统一与校验
  • 方案
    • limit: 默认 20,上限 100;page: 默认 1,最小 1。非法参数返回 400(RFC7807 错误体)。
    • page 越界:保持 v1 行为返回 200 + 空数组,但补充分页元信息,便于客户端判断。
    • 响应统一结构: { "items": [ ... ], "page": 3, "limit": 20, "total": 245, "totalPages": 13, "hasNext": true }
    • 参数校验注解: @RequestParam(defaultValue = "20") @Min(1) @Max(100) Integer limit, @RequestParam(defaultValue = "1") @Min(1) Integer page
  1. 资源与字段命名一致性(兼容过渡)
  • 资源路径
    • 标准化使用 /api/v1/users;保留 /api/v1/user 作为别名,响应头加 Deprecation 与 Sunset,并在 OpenAPI 标注 deprecated。
  • JSON 命名
    • 对外响应统一 camelCase。
    • 请求体兼容 snake_case:在 DTO 字段添加 @JsonAlias("snake_case_name") 或自定义反序列化策略以同时接受两种风格。
  • 示例 public class UserUpdateRequest { @JsonAlias({"first_name"}) private String firstName; }
  1. 隐私/内部字段的对外暴露管理
  • 方案
    • 引入 DTO(UserResponse)与实体解耦;默认响应不包含 isDeleted、internalNote。
    • 为不破坏 v1 兼容性,短期内保留这两个字段,但在 OpenAPI 标为 deprecated,并在服务层统一填充策略(仅在需要时返回,或由 feature flag 控制)。同时在响应头加入 Deprecation 与计划 Sunset 日期。
    • 长期在 v2 完全移除。
  • 代码示例 public record UserResponse(Long id, String name, String email, @Deprecated Boolean isDeleted, @Deprecated String internalNote) {}
  1. /users/{id}/activate 的超时、重试与幂等保障
  • 方案
    • 维持 POST /api/v1/users/{id}/activate(动作语义)。约束:
      • 服务超时 2s(例如 Resilience4j TimeLimiter)。
      • 最多重试 1 次(指数退避),仅在可重试错误上触发。
      • 要求客户端携带 Idempotency-Key;服务端保存去重记录(key+userId),保证重试/超时重放的幂等。
    • 失败返回 4xx/5xx 的 RFC7807 错误体;若异步下游,返回 202 + operationId,提供查询状态接口(可选,后续迭代)。
  • 伪代码 @PostMapping("/api/v1/users/{id}/activate") @TimeLimiter(name="activateUser", timeoutDuration="2s") @Retry(name="activateUser", maxAttempts=2) public ResponseEntity activate(@PathVariable Long id, @RequestHeader("Idempotency-Key") String key) { ... }
  1. OpenAPI 3.0 定义与 SDK 生成(2 天内)
  • 方案
    • 引入 springdoc-openapi-starter-webmvc-ui,自动扫描生成 /v3/api-docs 与 Swagger UI。
    • 在 components.schemas 定义统一错误体 Problem,扩展 code 与 traceId;在 components.responses 中定义通用错误响应并在全局应用。
    • 标注 deprecated 的路径/字段;为分页参数添加 @Parameter 注解和默认值/范围。
    • 使用 openapi-generator 生成前端/Java SDK。
  • 任务拆分(建议)
    • Day 1:引入依赖、统一异常处理、完成 users 列表与 update 的契约定义与实现。
    • Day 2:补齐 activate、分页/排序与全局错误响应;生成并发布 SDK。
  1. 具体代码级别修正(针对示例片段)
  • 控制器返回 DTO + 正确状态码 @RestController class UserController { @PutMapping("/api/v1/users/{id}") public ResponseEntity<?> update(@PathVariable Long id, @Valid @RequestBody UserUpdateRequest req) { if (!service.exists(id)) { throw new NotFoundException("user not found", "USR_404"); } User updated = service.updateOnly(id, req); // 不再创建新记录 return ResponseEntity.ok(mapper.toResponse(updated)); // 不直接暴露实体 } }
  • 全局异常处理(简化示例) @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(AppException.class) public ResponseEntity handle(AppException ex, HttpServletRequest request) { ProblemDetail pd = ProblemDetail.forStatus(ex.getStatus()); pd.setTitle(ex.getTitle()); pd.setDetail(ex.getMessage()); pd.setProperty("code", ex.getCode()); pd.setProperty("traceId", Optional.ofNullable(MDC.get("traceId")).orElse(UUID.randomUUID().toString())); pd.setProperty("success", false); // 兼容字段 return ResponseEntity.status(ex.getStatus()).body(pd); } }

技术理由

  • RFC7807 标准化错误结构,使客户端可以仅凭 HTTP 状态与标准字段完成分支处理;扩展 code 与 traceId 能直达业务错误类型并快速关联日志。
  • 幂等的 PUT 可以避免网络抖动或重试导致的数据重复,配合 ETag/If-Match 能优雅处理并发写入与更新丢失。
  • 分页参数服务端校验能在入口处拦截无效请求,减少下游负载;统一的分页响应元信息让客户端无需“猜测”是否越界。
  • 路径与字段风格一致性降低前后端映射成本,@JsonAlias 允许在不破坏兼容性的情况下平滑迁移到 camelCase。
  • DTO 与实体解耦是避免内部字段外泄的根本手段;在 OpenAPI 标注 deprecated 并结合 Deprecation/Sunset 头,能给到明确的迁移窗口与预期。
  • 对副作用操作配置超时与有限重试可控制资源占用与雪崩风险;Idempotency-Key 能保障在重试/超时重放下的业务一致性。
  • OpenAPI 作为单一事实源可用于生成 SDK、Mock、契约测试,显著降低联调成本与回归缺陷。

预期效果

  • 客户端判断成功/失败将更直接(靠 HTTP 状态与标准错误体),错误定位可通过 traceId 快速闭环。
  • PUT 更新具备明确的幂等语义,重复请求不再新增记录,数据一致性风险显著降低。
  • 分页/排序行为可预期且自解释,越界与默认值清晰,减少参数类问题的沟通与返工。
  • API 命名与字段风格统一,降低心智负担;在不破坏 v1 的前提下逐步淘汰不一致用法。
  • 内部字段外露得到可控管理,逐步过渡到只暴露对业务必要的字段,提高安全性与清晰度。
  • 两个工作日内完成 OpenAPI 定义并生成 SDK,将显著提升前端开发效率,减少因契约不清导致的集成错误。

示例详情

解决的问题

将生硬或负面倾向的代码审查意见,快速转化为专业、友好、且可执行的反馈;为每条意见自动补齐明确的修改建议、原因与预期收益;统一团队审查话术与输出结构,降低沟通摩擦;缩短合并周期、减少往返沟通、提升开发者体验与代码质量;适用于日常审查、新人带教、跨团队协作与质量治理场景,助力团队形成持续改进的文化与标准。

适用用户

代码审查负责人

使用本提示快速将审查意见重写为建设性反馈,明确修改步骤与收益,减少合并阻力,提升评审周转效率。

资深开发工程师

将复杂技术问题拆解为可执行建议与正向表达,指导同事优化代码与设计,同时维持专业又友好的沟通氛围。

新入职或初级开发者

通过优化后的反馈理解问题根因、学习改进方法与最佳实践,自主修复缺陷并建立高质量代码习惯。

特征总结

一键将技术意见转化为专业友好、可执行的建设性反馈,降低抵触提升接受率
自动识别审查核心问题点并提炼重点,聚焦最影响质量与交付的改动
按标准模板生成完整反馈结构,含原始意见、优化表达、建议、理由与预期效果
为每个问题给出具体可行的修改步骤与示例,落地迅速,避免含糊其辞
灵活调整语气强度,从严谨到友善自如切换,匹配不同对象与团队文化
以正向表达替换批评性措辞,兼顾专业与鼓励,营造合作氛围与心理安全
逐条附带技术依据与收益说明,使建议更有说服力,便于团队形成共识
适配日常评审、新人指导、跨组协作等场景,统一反馈风格,降低沟通成本
通过结构化流程引导思考,避免遗漏关键点,提高审查效率与反馈质量

如何使用购买的提示词模板

1. 直接在外部 Chat 应用中使用

将模板生成的提示词复制粘贴到您常用的 Chat 应用(如 ChatGPT、Claude 等),即可直接对话使用,无需额外开发。适合个人快速体验和轻量使用场景。

2. 发布为 API 接口调用

把提示词模板转化为 API,您的程序可任意修改模板参数,通过接口直接调用,轻松实现自动化与批量处理。适合开发者集成与业务系统嵌入。

3. 在 MCP Client 中配置使用

在 MCP client 中配置对应的 server 地址,让您的 AI 应用自动调用提示词模板。适合高级用户和团队协作,让提示词在不同 AI 工具间无缝衔接。

AI 提示词价格
¥30.00元
先用后买,用好了再付款,超安全!

您购买后可以获得什么

获得完整提示词模板
- 共 570 tokens
- 7 个可调节参数
{ 原始审查意见 } { 审查场景 } { 反馈重点 } { 语气强度 } { 目标开发者背景 } { 具体代码片段或上下文 } { 期望的改进方向或约束 }
获得社区贡献内容的使用权
- 精选社区优质案例,助您快速上手提示词
使用提示词兑换券,低至 ¥ 9.9
了解兑换券 →
限时半价

不要错过!

半价获取高级提示词-优惠即将到期

17
:
23
小时
:
59
分钟
:
59