热门角色不仅是灵感来源,更是你的效率助手。通过精挑细选的角色提示词,你可以快速生成高质量内容、提升创作灵感,并找到最契合你需求的解决方案。让创作更轻松,让价值更直接!
我们根据不同用户需求,持续更新角色库,让你总能找到合适的灵感入口。
本提示词专为代码审查人员设计,通过系统化分析现有代码结构,提供模块拆分、函数精简、命名优化与可测试性提升的专业重构建议。采用架构思维和重构原则,识别代码中的冗余逻辑、模块依赖问题,并给出具体改进方向和优先级排序,帮助提升代码的可维护性、可读性和可测试性,确保重构建议不改变业务逻辑语义,同时符合软件工程最佳实践。
| 问题描述 | 重构建议 | 预期收益 | 优先级等级 |
|---|---|---|---|
| 请求处理内直接使用同步文件IO(fs.readFileSync),阻塞事件循环,随并发增加导致吞吐急剧下降 | 将读取用户数据的逻辑改为异步(使用 fs.promises 或回调),把 handleRequest 改为异步流程;保持现有响应结构与错误兜底行为一致(/users 返回空数组,/user 返回空对象),仅改变执行方式;在统一的数据访问层中完成 JSON 解析与异常捕获 | 消除阻塞,提高并发与响应性能;避免单次慢IO拖垮整个服务;为后续测试替换数据源铺路 | 高 |
| 路由与URL解析逻辑耦合且脆弱:通过字符串匹配和 split("=") 手工取 id,难以扩展且易出错 | 使用 URL/URLSearchParams 对 req.url 做统一解析,拆分为 pathname 与 query;以路由表(对象映射)分发到独立的处理函数(handleUsers、handleUserById、handleHealth、handleNotFound),每个函数仅关注其职责 | 逻辑清晰、易扩展;减少条件分支与手工解析错误;降低圈复杂度,提升可读与可测试性 | 高 |
| 数据读取与解析逻辑重复:多处直接 JSON.parse(fs.readFileSync) 而不是复用 readJson | 统一通过 readJson('./data/users.json') 读取用户数据,集中异常处理与默认值返回;将数据文件路径提升为模块常量,避免魔法字符串散落 | 去重并统一错误语义;减少重复代码与维护成本;更易在测试中替换数据源或路径 | 高 |
| 用户对象构造重复:/users 分支手写循环构造,与已有 buildUser 语义重复 | 在 /users 分支用 Array.map 配合已存在的 buildUser 构造列表;保持输出结构与字段语义不变 | 一致性更高、减少重复与潜在偏差;代码更简洁,便于审查与测试 | 高 |
| 启动服务器与请求处理同模块,导致 require 即副作用启动,不利于测试与模块复用 | 将 http.createServer(...).listen(3000) 移至独立的启动模块(如 server.js),当前模块仅导出纯处理逻辑(handleRequest、readJson、buildUser);测试时只加载处理模块,不触发监听 | 职责分离、避免测试环境副作用;更易编排集成或替换端口/协议 | 中 |
| 业务逻辑与数据访问耦合:处理函数内直接读文件,难以对数据源做替换或模拟 | 引入轻量的数据访问层(用户仓库),封装 getAllUsers 与 findById,内部复用 readJson;handleRequest 仅负责路由与响应(通过依赖注入传入仓库或在模块级创建) | 降低耦合,提升可测试性(可用内存/假数据替代文件);边界更清晰,便于后续迁移数据源 | 中 |
| 响应写入分散:多处重复设置头与 JSON.stringify | 抽取 writeJson(res, payload, status=200) 与 writeText(res, payload, status=200) 等轻量响应工具;集中设置 Content-Type 与序列化,路由处理函数仅返回数据 | 去重与统一响应格式;减少重复代码与错误概率;测试更聚焦在业务数据 | 中 |
| 命名不具自解释性(a、x、list、parts、found 等),增加理解成本 | 统一变量/参数命名:a→users,x→user,list→usersDto,parts→queryParams,found→matchedUser;readJson(path) 的参数改为 filePath,buildUser(u) 改为 rawUser | 可读性提升,降低认知负担;代码意图更明确,审查与维护成本降低 | 中 |
| 侧向关注的日志散落在处理函数中(console.log),测试中难以屏蔽与断言 | 将日志调用封装到轻量 logger 模块或函数,通过依赖注入或模块常量引用;在测试中可替换为空实现或记录器 | 控制副作用、测试更稳定;日志策略可统一调整而不影响业务逻辑 | 低 |
| 问题描述 | 重构建议 | 预期收益 | 优先级等级 |
|---|---|---|---|
| run函数包含读取CSV、创建文件、校验、清洗、序列化、缓存和日志等多重职责,违反单一职责原则,难以单元测试 | 按SRP拆分为独立函数/模块:ensure_input_file(path)、read_rows(path)、validate_row(row)(保留)、clean_row(row)、write_json(path, data)、update_cache(data)。run仅负责编排调用,保证现有行为(文件不存在时创建空文件、跳过无id的行、name去空格、age转换默认0、写出JSON、更新缓存与打印日志)不变 | 降低圈复杂度、提升可测试性与可维护性,明确责任边界 | 高 |
| 使用全局可变状态result_cache导致隐式耦合,get_by_id与run之间绑定紧密 | 封装为Repository模块(或对象):save(cleaned)、get_by_id(id)、load_from_file()、set_cache(data);在run中通过依赖注入或模块接口更新缓存。保持现有顺序:优先查缓存,未命中再读文件 | 降低模块耦合,便于替换存储实现与进行单元测试,减少隐藏副作用 | 高 |
| 输出文件被连续写入两次(json.dumps手写+json.dump),重复打开文件 | 抽取单一写出函数write_json(path, data),内部只进行一次打开与一次写入(保持当前默认JSON行为),删除重复写入路径 | 消除重复I/O与潜在覆盖问题,代码更简洁可控 | 高 |
| get_by_id包含重复的遍历与比较逻辑,先遍历缓存再遍历文件,两处实现相似 | 抽取find_by_id(collection, user_id)纯函数统一比较逻辑;或在更新缓存时构建索引(如字典,键为标准化后的id,只记录首个出现项以保持现有“取首个匹配”语义),get_by_id优先用索引命中 | 复用逻辑,降低重复代码;在有缓存情况下由O(n)降至O(1)查询 | 中 |
| 异常处理过于宽泛(裸except),掩盖真实错误来源(age转换、JSON读取) | 收窄异常范围并保留当前回退语义:age转换仅捕获ValueError/TypeError,JSON读取仅捕获JSONDecodeError/OSError;在捕获后返回当前默认值(0或[]),并通过统一日志函数记录错误信息 | 错误更可观测、定位更容易,不改变业务行为 | 中 |
| 数据清洗逻辑内联在run中(name去空格、age转换),难以复用与测试 | 提取纯函数clean_row(row):集中处理name规范化与age安全转换等清洗步骤;validate与clean的调用顺序在管道中固定,确保语义一致 | 提升可测试性与复用性,清洗规则集中更易扩展 | 中 |
| 函数直接读取全局CONFIG,路径与逻辑耦合,影响测试与复用 | 将路径作为参数传入run/get_by_id,或引入轻量Config结构(不可变)并在模块间传递;Repository内部持有路径,外部不直接依赖全局CONFIG | 降低耦合,便于在测试中替换临时文件路径,提升可移植性 | 中 |
| 文件存在性检查与读取逻辑混合在run中,副作用分散 | 抽取ensure_input_file(path)到I/O层,读取函数只负责读取,副作用集中到一个入口 | 代码意图更清晰,I/O副作用更易管理与测试 | 中 |
| 读取CSV后先累积到rows,再二次遍历清洗,产生不必要的中间列表与额外遍历 | 采用生成器管道:read_rows直接迭代reader,边读边校验与清洗再收集到cleaned;不改变最终输出 | 降低内存占用与遍历次数,简化控制流 | 低 |
| 日志使用print分散在代码中,测试中难以控制输出 | 抽取轻量log(msg)或可注入的logger接口,run与异常分支统一通过该接口输出(保持现有信息内容不变) | 提升可测试性与一致性,方便后续替换日志实现 | 低 |
| id比较逻辑分散(多处使用str转换),缺乏统一的规范化步骤 | 抽取normalize_id(value)并在清洗或查找统一处理;所有比较使用标准化后的id,保持现有“字符串化比较”的语义 | 一致性更好,减少隐性bug,便于维护 | 低 |
| 问题描述 | 重构建议 | 预期收益 | 优先级等级 |
|---|---|---|---|
| OrderManager 直接依赖静态 Database/Audit/Payment 和具体 HttpClient、env 字符串,耦合度高、不可替换,外部副作用难以隔离 | 引入依赖抽象并通过构造函数注入:定义 OrderRepository、Notifier、PaymentGateway、AuditLogger、EnvironmentConfig 等接口;提供默认适配器封装现有 Database/HttpClient/Payment/Audit 与 'prod' 环境判断,保持当前行为不变 | 降低耦合、显著提升可测试性(可 Mock 外部依赖)、易于替换实现、便于分层治理 | 高 |
| create/cancel 方法同时承担校验、ID 生成、税费/总额计算、持久化、外部通知、审计等多重职责,函数臃肿且副作用混杂 | 函数精简与流程编排:在 OrderManager 内部提取私有方法(如 validateAmount、normalizeNote、calculateTax、calculateTotal、generateOrderId、persistOrder、notifyIfProd、logAudit、processRefund),主方法只负责调用编排;保持现有逻辑与顺序不变 | 提升可读性与可维护性、降低圈复杂度、为单元测试提供可控断点、减少重复代码 | 高 |
| Order 构造函数存在可读性和潜在错误的赋值链(this.userId=userId=this.userId=userId),易引发维护问题 | 简化为显式字段赋值:this.id = id; this.userId = userId; this.amount = amount;移除链式赋值,保持现有语义 | 消除潜在 bug 与歧义、提升可读性与稳定性 | 高 |
| 税率与总额计算散落与重复(amt*0.1,total=amt+tax;cancel 中重复) | 抽取一致的 TaxCalculator(税率常量=0.1,公式不变),在 create/cancel 统一调用;将税率与相关公式集中管理 | 保证计算一致性、减少重复、未来调整税率更安全 | 高 |
| 环境判断耦合在业务方法中('prod' 字符串直比较),影响测试与扩展 | 抽象通知策略:通过 EnvironmentConfig/NotificationPolicy 决定是否发送通知;'prod' 作为命名常量;默认策略保持非 prod 跳过通知的现有行为 | 业务与环境解耦、便于模拟不同环境、避免魔法字符串 | 中 |
| 大量魔法字符串与常量散落("order"、"status"、"CANCELED"、"ORDER_CREATE"、"ORDER_CANCEL"、通知 URL 等) | 引入命名常量或枚举,集中管理这些值;调用处使用常量引用,保持值完全不变 | 降低拼写错误风险、提升一致性与可读性、便于全局替换 | 中 |
| 命名不清晰(OrderManager、create/cancel、amt、env、client、o、ok 等),语义表达弱 | 命名优化:OrderManager→OrderService;create→createOrder;cancel→cancelOrder;amt→amount;env→environment;client→httpClient;id→orderId;o→order;ok→refundSucceeded 等 | 提升可读性与自解释性、降低认知负担、便于代码审查与协作 | 中 |
| 时间来源不可控(System.currentTimeMillis 用于订单号),影响测试稳定性 | 抽象时间/ID 生成器(Clock/IdGenerator)并注入;默认实现仍基于当前时间生成,保持现有 ID 格式与语义 | 测试可控、易于模拟时间场景、降低随机性对测试的影响 | 中 |
| 日志/控制台输出硬编码(System.out.println),测试难以断言且不易统一管理 | 抽象 Logger 接口并注入;默认实现仍输出到控制台;统一将“creating order”、HTTP 请求、审核事件通过 Logger 记录 | 提升可测试性与可观测性、统一日志出口、可在不同环境替换日志实现 | 中 |
| Database.save 使用 Object... 可变参数,类型安全差且易出现参数顺序错误 | 引入明确的持久化模型或仓储签名(如 save(Order) 或 OrderRecord);通过适配器保留现有静态调用的外观以不改对外行为 | 提升类型安全与可维护性、降低调用错误概率 | 中 |
| 单例模式造成全局隐式状态,阻碍并发测试与替换实现 | 弱化/移除单例:提供可构造的服务对象并通过依赖注入管理生命周期;若需保留 get(),可委托到内部可替换实例,默认保持现有实例行为 | 降耦合、支持多实例测试、避免共享状态带来的问题 | 中 |
| 微小性能问题:HTTP body 通过字符串多次拼接、HttpClient 无条件创建、重复计算税费 | 进行轻量性能优化:使用格式化构造请求体(如 String.format)、延迟初始化或共享 HttpClient 实例、复用已抽取的税费计算结果;确保输出与流程不变 | 轻微降低 GC 压力与 I/O 开销、在高频调用场景下略微提升性能 | 低 |
将“代码结构重构优化顾问”用于代码审查、技术债务清理与架构升级场景,帮助团队在不改变业务逻辑的前提下,快速识别结构问题与重构机会,生成清晰的优先级清单与可执行建议。通过模块拆分、函数瘦身、命名规范与依赖解耦等方向,提升代码的可维护性、可读性与可测试性,显著缩短审查时间、降低返工与上线风险,并让非架构师也能产出媲美资深顾问的重构方案。
用它评估重构范围与收益,制定迭代排期与里程碑,把控风险与质量,统一团队改造标准。
评审时快速生成问题清单与优化建议,减少遗漏与分歧,形成可执行整改任务并跟踪落地。
梳理模块依赖与职责边界,规划分阶段演进路线,指导团队拆分、重组与接口调整。
将模板生成的提示词复制粘贴到您常用的 Chat 应用(如 ChatGPT、Claude 等),即可直接对话使用,无需额外开发。适合个人快速体验和轻量使用场景。
把提示词模板转化为 API,您的程序可任意修改模板参数,通过接口直接调用,轻松实现自动化与批量处理。适合开发者集成与业务系统嵌入。
在 MCP client 中配置对应的 server 地址,让您的 AI 应用自动调用提示词模板。适合高级用户和团队协作,让提示词在不同 AI 工具间无缝衔接。
免费获取高级提示词-优惠即将到期