热门角色不仅是灵感来源,更是你的效率助手。通过精挑细选的角色提示词,你可以快速生成高质量内容、提升创作灵感,并找到最契合你需求的解决方案。让创作更轻松,让价值更直接!
我们根据不同用户需求,持续更新角色库,让你总能找到合适的灵感入口。
本提示词专为代码审查人员设计,通过系统化的分析框架深度识别代码可读性问题。能够从变量命名规范性、注释完整性、逻辑结构清晰度、代码格式一致性四个维度进行全面评估,提供具体可行的改进建议。适用于团队代码审查、个人代码优化、新人代码指导等多种场景,帮助提升代码质量和团队协作效率,确保代码符合主流编程规范标准。
| 问题类型 | 具体位置 | 问题描述 | 改进建议 | 优先级 |
|---|---|---|---|---|
| 命名规范 | 函数名 do_stuff | 名称抽象且不表达职责,难以理解函数用途 | 重命名为 summarize_orders 或 aggregate_orders,体现“订单汇总”;同时在函数签名中将 L 重命名为 orders | 高 |
| 命名规范 | 函数名 calc_disc | 缩写不清晰,无法直观理解返回值含义(折扣系数) | 重命名为 calculate_discount_factor 或 get_discount_multiplier | 中 |
| 命名规范 | 变量 L、i、a、b、nm、tot、d、res、cnt | 大量单字母变量可读性差且语义不明确 | 采用具名命名:orders、order、amount、quantity、name、order_total、discount_factor、totals_by_name、processed_count | 高 |
| 命名规范 | 全局变量 db | 名称容易误导为数据库连接,实际为简易缓存字典 | 重命名为 ORDER_CACHE 或 CACHE,并为结构加类型注释(如 Dict[str, Dict[str, float]]]);保持结构不变(仍使用 ['cache'] 子键) | 中 |
| 命名规范 | 常量 RATE | 未使用的常量增加认知负担 | 若无计划使用,删除该常量;若后续表示税率,添加注释说明用途和未启用原因 | 低 |
| 逻辑结构 | 月份过滤条件 | 使用嵌套 if 和 == False,表达不直观 | 改为单行早退出式:if month is not None and not str(order.get('ts', '')).startswith(str(month)): continue | 中 |
| 逻辑结构 | None 判断 | 使用 if a==None 不符合 Python 惯例 | 改为 if amount is None: amount = 0 | 高 |
| 逻辑结构 | 折扣计算流程 | 计算步骤分散且变量名不清晰 | 明确变量语义并合并表达:discount_factor = calculate_discount_factor(order); order_total = amount * quantity * discount_factor | 中 |
| 逻辑结构 | 计数与累加 | 使用分号在一行写多条语句,降低可读性 | 拆分为独立行:total += order_total; processed_count += 1 | 高 |
| 逻辑结构 | 汇总更新 | if key in res:res[key]+=tot 单行分支不易读 | 使用多行清晰分支或显式初始化:if name_key in totals_by_name: totals_by_name[name_key] += order_total else: totals_by_name[name_key] = order_total | 高 |
| 逻辑结构 | 遍历字典 | for k in res.keys() 冗余 | 改为 for k in res: 或 for name, subtotal in res.items(): | 低 |
| 逻辑结构 | 魔法数与魔法字符串 | 0.85、0.9、'H'、'unknown' 直接写在代码中,含义不明确 | 提取为具名常量:VIP_DISCOUNT_FACTOR、COUPON_H_CODE、COUPON_H_DISCOUNT_FACTOR、UNKNOWN_NAME,并在顶部集中定义 | 中 |
| 逻辑结构 | 浮点四舍五入修正 | round(res[k] + 0.00001, 2) 目的不清晰 | 提取为常量 ROUND_EPSILON = 1e-5,并为该处理添加注释说明(用于规避浮点误差);可封装为辅助函数 round_to_cents(value) 保持行为一致 | 中 |
| 逻辑结构 | 返回值结构 | 返回 dict 中键含义不够自解释('sum'、'avg'、'by_name') | 在函数 docstring 中明确各键的语义与单位(金额单位、是否含税等);保持键名不变,避免外部接口破坏 | 中 |
| 注释质量 | 模块缺少整体说明 | 无模块级文档说明用途与数据结构 | 添加模块 docstring:说明该模块用于运营日报的批量订单汇总、输入字典字段含义、月份过滤格式(YYYY-MM)与缓存策略 | 高 |
| 注释质量 | 函数缺少 docstring | 函数输入、返回值和副作用未说明 | 为 calc_disc 和 do_stuff 添加 docstring(参数类型、默认值、返回结构、是否写入缓存) | 高 |
| 注释质量 | 行内注释 | "# i: order dict" 信息不足;"# caching maybe" 模糊 | 将行内注释替换为更具体描述或移入 docstring;缓存注释需明确“按 month 键缓存 by_name 汇总” | 中 |
| 代码格式 | 缩进 | run 函数混用 Tab 与空格,缩进不一致,违背 PEP8 | 全文统一使用 4 空格缩进;配置编辑器显示不可见字符并启用自动格式化 | 高 |
| 代码格式 | 语句分隔与空格 | 使用分号在单行写多条语句;运算符和逗号周围空格不一致 | 每行一条语句;在 =、+、*、逗号等符号周围添加空格;遵循 PEP8 的空格规范 | 高 |
| 代码格式 | 字符串风格 | 单引号与双引号混用 | 统一字符串风格(建议使用单引号),仅在需要转义或与文案风格相关时使用双引号 | 低 |
| 代码格式 | 调试输出 | print("DBG:", nm, tot) 输出格式粗糙 | 使用 f-string 并格式化金额:print(f'DBG: {name} {order_total:.2f}');保持 debug 标志控制 | 低 |
| 代码格式 | 顶层函数分隔 | 顶层函数间空行数量不一致 | 顶层函数之间使用两个空行分隔(PEP8) | 低 |
| 代码格式 | 类型注解 | 缺少类型提示,降低静态检查与 IDE 友好度 | 为函数添加类型注解:def calculate_discount_factor(order: dict) -> float; def summarize_orders(orders: list[dict], month: str | None = None, debug: bool = False) -> dict |
| 逻辑结构 | 缓存内容说明 | 仅缓存 by_name,未说明是否有意 | 在 docstring 注明缓存仅包含按名称汇总结果,如需扩展再评估接口影响;当前保持行为不变 | 中 |
总结性改进指导:
| 问题类型 | 具体位置 | 问题描述 | 改进建议 | 优先级 |
|---|---|---|---|---|
| 命名规范 | 类名 ReportGen | 类名缩写且不直观,不符合常见命名约定(UpperCamelCase 的有语义类名)。 | 将类名改为 ReportGenerator 或 MonthlyReportGenerator,更清晰表达职责。 | 高 |
| 命名规范 | 字段 S、m、lines | 字段命名语义不明确;S 非 final 却全大写易被误认为常量;m、lines 未体现用途且未使用。 | 删除未使用字段;如需保留路径字段,使用私有常量并命名为 DEFAULT_OUTPUT_PATH;去除含糊的 m 字段。 | 高 |
| 命名规范 | 方法 make 与参数 doCsv、dt | 方法名过短且缺少动词;doCsv、dt 缩写不清晰。 | 将方法名改为 generateReport;参数改为 csvOutput(或引入枚举 Format)、reportMonth。 | 高 |
| 命名规范 | 局部变量 x、u、t、sum、c、m2、q、p | 多个单字母变量降低可读性和语义表达。 | 重命名:x→record,u→userName,t→userTotal,sum→totalSum,c→recordCount,m2→itemMap,q→quantity,p→price。 | 高 |
| 注释质量 | 类/方法缺少 Javadoc | 没有总体说明、输入输出、边界与约定的文档;仅有“TODO”与不明确注释。 | 为类和 generateReport 方法添加 Javadoc,说明用途、参数、返回格式(CSV/文本)、折扣规则、键名称、空值处理与平均值计算的意图。 | 高 |
| 注释质量 | // counter?、// magic discount | 注释含糊,不解释原因与业务规则来源。 | 用完整注释说明 m 字段用途(若保留)或删除;对“折扣”标注来源、阈值与比例的业务逻辑说明。 | 高 |
| 类型使用 | List、Map 原始类型 | 多处使用原始类型(raw type),存在类型不安全与可读性差。 | 使用泛型:List<Map<String, Object>>、List<Map<String, Object>> items、Map<String, Object> itemMap 等。 | 高 |
| 常量与魔法值 | 1000、0.95、"NA"、键字符串 | 魔法值与硬编码键降低理解与维护成本。 | 引入常量:DISCOUNT_THRESHOLD = 1000、DISCOUNT_RATE = 0.95、DEFAULT_USER_NAME = "NA";键名常量:KEY_USERNAME、KEY_ITEMS、KEY_QUANTITY、KEY_PRICE。 | 高 |
| 逻辑结构 | generateReport 同时计算与格式化 | 方法职责不单一,计算与输出格式混杂,影响理解与后续扩展。 | 拆分私有方法:computeUserTotal(record)、formatCsvLine(...)、formatTextLine(...);主方法仅编排流程。 | 高 |
| 字符串构建 | result 使用 + 在循环中拼接 | 在循环内使用字符串拼接可读性和性能较差;末尾通过 substring 去掉换行不直观。 | 使用 StringBuilder 或 StringJoiner 管理行;通过 StringJoiner 自动处理分隔符,无需手动截断换行。 | 中 |
| 空值与类型转换 | q/p 解析逻辑 | 使用 toString()+""、(int)Double.parseDouble(...) 可读性差且脆弱;未说明 q/p 的期望类型与默认值。 | 抽取辅助方法:parseQuantity(Object, int defaultVal)、parsePrice(Object, double defaultVal) 并在注释中说明支持的类型与默认值。 | 中 |
| 逻辑结构 | items 为 null 的分支 | 通过 if/else 设置 t=0,有分支噪音。 | 使用空集合策略:List<Map<String,Object>> items = (List)record.getOrDefault(KEY_ITEMS, Collections.emptyList());(保持逻辑不变,提升可读性)。 | 中 |
| 平均值计算 | AVG=(sum/c) | 使用整数除法,输出为整型平均值但读者容易误解为小数平均值。 | 在注释中明确“平均值为整数(向下取整)”;若需小数,在后续需求中再调整为 double(当前保持逻辑不变)。 | 中 |
| 作用域与遮蔽 | 字段 m 与局部 m2 | 局部变量名 m2 与类字段 m 相似,易造成阅读混淆。 | 删除无用字段 m;局部变量改为 itemMap。 | 中 |
| 格式规范 | 代码风格一致性 | 运算符空格、换行、括号风格不统一;存在多语句同一行。 | 遵循 Google Java Style:每行一条语句、合理换行、操作符两侧空格、统一花括号样式。 | 中 |
| 参数设计 | boolean doCsv | 布尔旗标让调用处语义不清晰(true/false 不直观)。 | 使用枚举 Format { CSV, TEXT } 或拆分为两个清晰方法 generateCsvReport / generateTextReport(保持逻辑一致)。 | 中 |
| 输出格式说明 | 文本行格式 "user: ... total=...@..." | 非标准、语义靠猜测;缺少列说明。 | 在 Javadoc 中说明两种输出格式的列顺序与含义;可在文本格式中使用明确分隔符或标签(不改变当前逻辑下的顺序)。 | 低 |
| 示例代码命名 | main 中 D、r1、items、i1 | 示例变量命名随意且使用 raw types,降低示例价值。 | 在示例中同样使用泛型与有意义命名(records、recordAlice、itemList、firstItem),对齐主代码风格。 | 低 |
| 边界行为注释 | 异常/数据质量 | 潜在 NumberFormatException、类型不匹配等未说明。 | 在方法注释中声明输入数据的期望结构与类型约定;说明不做异常捕获,交由调用方保证数据质量。 | 低 |
总结性改进指导:
按优先级建议先完成:命名与常量提升、Javadoc 与关键注释补全、泛型化与方法职责拆分;随后处理字符串构建与风格统一,最后完善示例代码与边界行为说明。以上改动不改变现有业务逻辑,仅提升整体可读性与维护性。
| 问题类型 | 具体位置 | 问题描述 | 改进建议 | 优先级 |
|---|---|---|---|---|
| 命名规范 | 全局常量 MODE | MODE 命名含义不明确,取值 'prd' 非常规缩写;使用 var 不符合现代 JS 风格 | 改为 const ENV = 'prod' 或 const ENVIRONMENT = 'production',并在注释中说明可能取值(如 'development'/'production')。保持现有值不变但命名更清晰。 | 高 |
| 命名规范 | const URL_base | 使用下划线与驼峰混用,大小写不统一,不符合常量命名约定 | 改为 const API_BASE_URL = '/api',统一常量命名(全大写+下划线),便于识别与搜索。 | 高 |
| 命名规范 | function get_d(uId, cb) | 函数名与参数名语义不足(get_d、uId、cb),阅读成本高 | 改为 function getUserData(userId, callback);保持逻辑不变,仅提升可读性。 | 高 |
| 命名规范 | localStorage 键 'u_cache' | 直接使用字面量字符串,易于散落、拼写不一致 | 提取为常量:const USER_CACHE_KEY = 'u_cache';在全文件统一使用该常量。 | 中 |
| 逻辑结构 | get_d 函数内部 | 同时承担请求、回退数据组装、缓存读写、错误日志、回调通知,多职责混杂 | 保持对外行为不变,内部拆分为小函数:fetchUser(userId)、readUserCache()、writeUserCache(userId, data)、handleError(err, callback)。getUserData 仅负责流程编排。 | 高 |
| 逻辑结构 | fetch 链式 then | then 回调嵌套与混合责任导致阅读困难 | 在不改变接口的前提下,拆出命名清晰的处理函数:handleResponse(resp)、updateCacheAndReturn(userId, data)、notifyCallback(callback, data, err)。 | 中 |
| 逻辑结构 | boot 声明为 async | 声明为 async 但未使用 await,产生误导 | 去掉 async 关键字,或在后续重构为 await 版本时再加;当前建议移除以减少误导。 | 中 |
| 逻辑结构 | 获取 id 的表达式 | location.search.split("id=")[1] 解析脆弱、可读性差 | 使用 URLSearchParams:const id = new URLSearchParams(location.search).get('id') | |
| 注释质量 | 文件头与全局 | 仅有简短 // env 注释,缺少模块用途、关键流程说明 | 在文件顶部添加模块说明、数据流概述、缓存策略与回退行为说明;示例:说明“请求失败时使用{name:'', id:uId}作为回退”。 | 中 |
| 注释质量 | 函数 get_d/boot | 缺少参数、返回/回调约定说明,不利于协作 | 为函数添加 JSDoc 注释:说明参数类型、callback 签名((data, err))、可能的回调数据形态与错误场景。 | 高 |
| 代码格式 | 分号与换行 | 语句分号缺失且多语句同行,如 var t = ...; if(!t){t="{}"} | 统一使用分号与一行一语句;采用 Prettier 风格(单语句换行、缩进一致)。 | 高 |
| 代码格式 | 引号与空格 | 单/双引号混用,运算符与关键字两侧空格不一致 | 统一为单引号(或团队约定),在二元运算符与关键字处添加空格;使用 eslint/prettier 自动化格式化。 | 中 |
| 代码格式 | 字符串拼接 | "/user/"+uId 可读性一般 | 使用模板字符串:${API_BASE_URL}/user/${userId},更直观。 |
低 |
| 逻辑细节/健壮性 | 比较操作 | 使用==进行比较(MODE=="prd"、r.status==200),不符合最佳实践 | 统一使用严格等于 ===;示例:if (ENV === 'production') 与 if (response.status === 200)。 | 高 |
| 逻辑细节/健壮性 | 回调约定 | cb(data, err) 的错误优先约定未显式说明;首个分支用 "no id" 当错误但类型为字符串 | 在 JSDoc 中明确约定:callback(data, error)。错误一律使用 Error 对象或统一结构(保持现有逻辑但文档化),便于调用方判断。 | 中 |
| 日志可读性 | console.log("e", e)、console.log("x", err) | 日志标签不具描述性,难以定位问题来源 | 统一使用 console.error 并提供上下文信息:console.error('[getUserData] JSON parse failed', e)、console.error('[getUserData] fetch failed', err)。 | 中 |
| DOM 操作一致性 | querySelector 与 getElementById 混用 | 同一元素选择使用两种 API,降低一致性 | 统一使用一种方式(建议 document.getElementById('n'));同时统一使用 textContent 替代 innerHTML 渲染纯文本,避免歧义。 | 中 |
| 可读性 | 魔法字符串 'ERR' | 错误展示文案硬编码且语义不足 | 提取常量或改为更具体文案;如 const ERROR_TEXT = 'Error'; 并在注释中说明展示策略。 | 低 |
| 可读性/健壮性 | 本地缓存解析 | 解析与默认值写在一行,异常与正常路径不清晰 | 拆分为清晰步骤:const cacheRaw = localStorage.getItem(USER_CACHE_KEY) | |
| 接口一致性 | 回退对象结构 | 非 200 返回时构造 {name:"", id:uId},行为合理但未文档化 | 在函数注释中明确该回退策略与用途,以便调用方预期到 name 为空串的情况。 | 低 |
总结性改进指导:
把代码审查从“凭经验”升级为“有标准、能落地”的高效流程。通过一键识别命名、注释、逻辑、格式四大类可读性问题,生成带优先级的改进清单与行动指引,帮助团队缩短审查周期、降低返工与沟通成本、提升协作效率,并持续让代码符合主流风格指南。适用于团队评审、重构前检查、新人培训与规范统一,助力从“能看懂”到“易维护”的质量跃迁。
用助手快速形成统一评审标准与问题清单,按优先级安排整改,提升评审效率与交付质量。
在提交前自检代码,得到命名、注释、结构的具体修改建议,缩短被退回次数,迅速融入团队规范。
在重构或拆模块时,批量识别可读性风险,指导拆分与规范统一,降低后续维护成本。
将模板生成的提示词复制粘贴到您常用的 Chat 应用(如 ChatGPT、Claude 等),即可直接对话使用,无需额外开发。适合个人快速体验和轻量使用场景。
把提示词模板转化为 API,您的程序可任意修改模板参数,通过接口直接调用,轻松实现自动化与批量处理。适合开发者集成与业务系统嵌入。
在 MCP client 中配置对应的 server 地址,让您的 AI 应用自动调用提示词模板。适合高级用户和团队协作,让提示词在不同 AI 工具间无缝衔接。
免费获取高级提示词-优惠即将到期