Add Why-Comments to Legacy Code
Coding and DebuggingAdd Why-Comments to Legacy Code — Chinese original prompt
这段代码 [代码片段] 没有注释,接手的人不敢改。请只补「为什么」类注释:魔数从哪来、这里为什么要 sleep、为什么不…
AI / Coding and Debugging
Name who gets hurt, which path is most fragile, and how you get out
12 / 17
Add Why-Comments to Legacy Code — Chinese original prompt
这段代码 [代码片段] 没有注释,接手的人不敢改。请只补「为什么」类注释:魔数从哪来、这里为什么要 sleep、为什么不…
Separate Side Effects from Logic — Chinese original prompt
这个函数既算价格、又写数据库、还发消息。请把它拆成 [纯计算部分] 与 [副作用执行部分]:纯函数只收参数只返结果,副作…
Refactor an Eight-Parameter Function — Chinese original prompt
这个函数有 [参数个数] 个位置参数,调用处经常传错顺序。请改成配置对象或具名参数,给出新签名、默认值、必填校验,以及全…
Replace a Giant Switch — Chinese original prompt
这个 switch 有 [分支数] 个分支,每个分支在做类似的事。请重构成「键 → 处理函数」的映射表,输出映射定义、默…
Split an Overgrown Utils Module — Chinese original prompt
这个 utils 文件里有 [方法数] 个互不相关的函数,谁都在 import。请按「调用方 + 变化原因」分组,给出新…
Rename Vague Variables — Chinese original prompt
这段代码里出现了 [含糊命名清单] 这类名字。请逐个给改名建议:新名字要说清它装的是什么、单位或量纲、能不能为空;每个旧…
Name Booleans as Questions — Chinese original prompt
这个模块 [模块名] 里布尔变量和返回布尔的函数命名混乱,有 is_、有 has_、还有直接叫 status 的。请统一…
Unify Domain Vocabulary — Chinese original prompt
同一个概念在代码里被叫成 [同义叫法一]、[同义叫法二]、[同义叫法三]。请先确定唯一术语并说明理由(和业务方口径、和数…
Review CREATE TABLE Naming — Chinese original prompt
请审查这份建表语句 [DDL] 的命名:缩写是否可读、布尔字段是否带 is_ 前缀、created_at 与 updat…
Make Test Names Describe Behavior — Chinese original prompt
这些测试 [测试文件] 的名字是 test1、test_ok、test_error2,失败时完全看不出坏了什么。请重命名…
Name Config Keys Consistently — Chinese original prompt
项目里的配置键 [混乱示例] 谁也说不清谁在用。请定一套命名约定:统一前缀(服务名或模块)、层级用分隔符表达归属、带单位…
Fix Functions Whose Names Lie — Chinese original prompt
这个叫 [函数名] 的函数实际做了三件名字里没写的事。请判断:是改名让名字配得上行为,还是把多余的事挪走让行为配得上名字…
Find Swallowed Exceptions — Chinese original prompt
请扫描 [待审查的代码] 里所有 catch 之后什么都不做、或只打一行日志就继续的地方,逐处判断:这里失败会导致什么业…
Stop Using Null for Failure — Chinese original prompt
这个函数 [函数名] 用返回 null 表示失败,调用方十个有八个没判空。请改成显式的成功/失败结果类型(Result、…
Add Timeouts and Retries — Chinese original prompt
这段代码调用 [外部服务],没有超时、失败就抛、重试还会重复下单。请补齐:连接与读取超时(给出建议值及依据)、只对可重试…
Sort Retryable and Fatal Errors — Chinese original prompt
现在的重试逻辑对所有异常一视同仁。请按 [调用场景] 把错误分成三类:重试就会好(网络抖动、限流)、重试也没用(参数错、…
Make Errors Debuggable — Chinese original prompt
现在 [接口或函数] 报错只说「操作失败」。请改写成可排查的格式:发生了什么、卡在哪个步骤、关键输入是什么(脱敏)、请求…
Release Resources on All Paths — Chinese original prompt
这段代码打开 [文件/连接/锁] 之后,中间任何一步抛异常都会泄漏。请改成异常安全的写法(try-with-resour…
Handle Frontend Errors Properly — Chinese original prompt
这个页面 [页面名] 里所有接口错误都被 catch 后弹一句 toast,用户不知道下一步做什么。请按类型处理:可重试…
Document the Error Contract — Chinese original prompt
请为 [函数/接口] 写一份错误契约:它在什么条件下抛错、抛什么类型、调用方必须处理哪些、哪些可以直接冒泡。用一张表列出…
List Empty-Input Edge Cases — Chinese original prompt
请为 [函数名] 列出必须覆盖的空值边界:参数为 null、空字符串、只有空白的字符串、空数组、只有一个元素,以及「有值…
Edge Cases in Bulk Export — Chinese original prompt
这个导出功能一次导出 [数据范围],现在偶尔超时或把内存打满。请列出边界并给出处理:超时(同步改异步任务)、内存(流式写…
A Checklist for Date Math — Chinese original prompt
这段代码做日期加减和「本月」统计。请检查这些边界:月末加一个月、闰年 2 月 29、跨年、夏令时切换的那一小时、服务器用…
Never Do Money Math in Floats — Chinese original prompt
这段代码 [金额计算逻辑] 用浮点数算钱并直接四舍五入。请指出会出错的场景:0.1 加 0.2、多次累加后的误差、除以…
Stop Mixing Seconds and Milliseconds — Chinese original prompt
这段代码里 [超时/间隔参数] 有的按秒、有的按毫秒传,出过十倍偏差。请逐处标出每个数值的单位依据(来自哪份文档或哪个库…
String Length and Character Traps — Chinese original prompt
这段代码按 [长度规则] 校验用户名,并把内容拼进 SQL 和页面。请列出边界:超长输入、纯 emoji(一个字符占多个…
Check for Broken Access Control — Chinese original prompt
这个接口从 URL 拿 [资源 id] 就直接查库返回。请找出越权风险:改 id 能否读到别人的数据、列表接口是否漏了归…
File Upload Edge Cases — Chinese original prompt
请审查上传接口 [接口地址] 的边界:空文件、超大文件、扩展名与实际内容不符、文件名带路径穿越、压缩包解压炸弹、并发上传…
Should Similar Code Be Merged — Chinese original prompt
这三段代码看起来很像,但分别属于 [模块 A]、[模块 B]、[模块 C]。请先判断它们是「真重复」还是「碰巧长得像」:…
Keep Validation in One Place — Chinese original prompt
手机号、身份证、金额上限这些规则 [涉及的表单] 在前端、后端各写了一遍,改一处就漏一处。请给出收敛方案:规则定义放哪(…
Extract Repeated Test Setup — Chinese original prompt
这个测试文件里每个用例都重复了 [行数] 行准备数据。请抽出 fixture 或工厂函数,要求默认值合理、每个用例只显式…
Deduplicate Logging and Tracking — Chinese original prompt
每个分支 [分支清单] 里都手写了同样的埋点和日志,新加分支时经常漏。请改成在一处统一处理:用装饰器、中间件或切面在进入…
Round Up Magic Numbers — Chinese original prompt
这段代码里到处是 [魔法数字示例] 这样的字面量,同一个值出现在五个地方,而且已经不一致了。请收敛成常量或枚举:命名带单…
Merge Duplicated Query Fragments — Chinese original prompt
这三个查询 [SQL 片段] 有八成 WHERE 条件相同。请给出收敛方案:抽成视图、CTE,还是仓储层的一个方法;比较…
Deduplicate Multi-Env Config — Chinese original prompt
开发、测试、生产三份配置 [配置文件路径] 有大量重复,只有少数值不同。请改成「基础配置 + 环境覆盖」的结构:哪些必须…
Keep the Original Stack Trace — Chinese original prompt
这段代码 [异常处理片段] 捕获异常后重新抛了一个新异常,只带了句「处理失败」。请找出所有丢失原因的地方:新异常有没有挂…
When Log Timestamps Disagree — Chinese original prompt
这几台机器上的日志 [时间段] 对不上,同一请求在两台上的先后顺序是反的。请给出排查与规范:是时钟漂移、时区没统一,还是…
Sanitize PII in Logs — Chinese original prompt
这些日志 [日志样例] 里打了手机号、身份证、完整卡号和请求头里的 token。请给出脱敏方案:哪些字段必须完全移除、哪…
Replace Prints with Logging — Chinese original prompt
这份脚本里用了 [处数] 个 print 来排查问题,上线后既关不掉也没法检索。请替换成日志:定义 logger、按用途…
Logs Lost on Process Crash — Chinese original prompt
这个服务 [服务名] 崩溃后,日志停在了出事前几十秒,最后几条关键信息没了。请排查:日志是否走了异步 appender…
Add Timing Marks to Key Steps — Chinese original prompt
这条 [链路名] 变慢了,但不知道慢在哪一步。请给出打点方案:每步开始与结束各记一次时间戳,算出本步耗时与累计耗时,标明…
Rotate Logs Before the Disk Fills — Chinese original prompt
这台机器上的日志 [目录] 占了大部分磁盘。请审查轮转配置:按大小还是按天切、单文件上限、保留几个历史文件、是否压缩、以…
Stop Loading Whole Tables — Chinese original prompt
这段代码一次查出 [表] 的全部记录,再在内存里过滤。请改成流式或分批处理:游标与分页的选法(避免 offset 越翻越…
Select Only the Columns You Need — Chinese original prompt
这段查询用了 SELECT 星号,表里还有 [大字段,如 描述/JSON]。请指出代价:多传的列带来的网络与内存开销、大…
Diagnose a Slow Long List — Chinese original prompt
这个页面一次渲染 [条数] 条数据,滚动明显掉帧。请按代价从低到高给出方案:分页或无限滚动、列表虚拟化、行组件 memo…
Where Should the Cache Expire — Chinese original prompt
这段代码给 [数据] 加了缓存,但没有失效策略。请设计:key 怎么带版本或租户、过期时间依据什么定、更新时是删缓存还是…
Find Needless Object Copies — Chinese original prompt
这段代码 [数据处理逻辑] 在大对象上来回拷贝(切片、深拷贝、序列化再反序列化)。请逐处判断是否必要:哪些是为了防止外部…
Size a Connection Pool — Chinese original prompt
这个服务的数据库连接池用了默认值,高峰期报等待超时。请根据 [并发量/单次查询耗时/实例数] 推算合理参数:最大连接、最…
Can This Regex Backtrack Forever — Chinese original prompt
这条正则用在用户输入上 [正则表达式]。请判断是否存在灾难性回溯(嵌套量词、相邻的通配与量词),给出会触发它的最坏输入示…
Why Is the Bundle So Big — Chinese original prompt
构建产物有 [体积] MB,首屏加载慢。请给一套排查顺序:按体积列出模块、找出被整包引入的库(能否按需引入)、检查重复依…
Test the Untouchable Function — Chinese original prompt
这个函数 [函数名] 没有测试,谁都不敢改。请先按分支列出用例清单(正常、边界、异常各几条),再写出测试代码:每个用例只…
These Tests Assert Nothing — Chinese original prompt
请审查测试文件 [文件路径] 的有效性:有没有只调用不断言、断言过宽(只判非空)、把被测代码的算法抄一遍再比对、mock…
Write a Failing Test First — Chinese original prompt
这个 bug 的复现步骤是 [复现步骤]。请先写一条当前必然失败的测试把它钉住(最小输入、明确断言),再给出修复思路,最…
No Real Network in Tests — Chinese original prompt
这批测试会真的请求 [外部服务],又慢又不稳定。请给出打桩方案:在哪一层拦截(HTTP 客户端、接口封装还是依赖注入)、…
What Coverage Is Hiding — Chinese original prompt
这个模块行覆盖率 [百分比],但线上仍然出问题。请指出覆盖率看不出的盲区:从未执行过的错误分支、只走了一条的 switc…
Should You Use Snapshot Tests — Chinese original prompt
这个项目里 [快照数量] 个快照测试动不动就整片失败。请判断哪些适合快照(稳定的结构化输出、序列化格式),哪些不适合(含…
Add an End-to-End Smoke Test — Chinese original prompt
这个项目发布前靠人工点一遍。请设计一条冒烟测试:覆盖 [核心路径,如 登录 → 下单 → 支付回调 → 订单落库],说明…
Read a Slow Query Plan — Chinese original prompt
这段 PostgreSQL 的 EXPLAIN 输出和表结构如下。请:1)指出耗时最高的节点及原因(扫行数、回表、排序、…
Convert Offset Paging to Cursor — Chinese original prompt
这段分页 SQL 在 [页码/数据量] 之后明显变慢。请:1)说明 OFFSET 为什么随页码线性变慢;2)给出用「上一…
Choose Column Order for Composite Indexes — Chinese original prompt
下面有 [N] 条高频查询和表的字段说明。请设计联合索引:1)按等值、范围、排序三类条件排出列顺序,逐条说明理由;2)标…