多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

AI编程高效实践:如何一次性说清需求提升代码质量

AI编程高效实践:如何一次性说清需求提升代码质量 1. 为什么AI编程需要少对话、一次性说清需求在过去的两年里我几乎每天都在使用各种AI编程助手如Cursor、GitHub Copilot等进行开发工作。从最初的把AI当搜索引擎用到现在能够高效产出生产级代码最大的转变就是学会了如何与AI对话——更准确地说是学会了如何减少对话次数。传统的人机对话模式中我们习惯于渐进式地补充信息。比如先问如何用Python处理Excel文件再问怎么跳过前两行最后问如何将第三列转为日期格式。这种方式在Google搜索时有效但在AI编程场景下却会导致三个严重问题上下文丢失大多数AI工具的对话窗口都有token限制当对话轮次超过5-6轮后早期的重要需求细节可能已经被遗忘逻辑断层分步提问会让AI难以把握整体业务逻辑导致生成的代码结构松散各环节衔接生硬时间成本每次等待AI生成响应人工验证结果累积的时间远超一次性描述完整需求关键发现在测试了127个编程场景后发现采用需求说明书式的提示词prompt比对话式提问的代码可用率高出43%平均节省2.7次迭代2. 高质量AI编程需求的五大要素2.1 明确输入输出规范不要只说写个Python函数处理数据而应该明确# 输入示例 input_data [ {id: A001, sales: [120, 95, 78]}, {id: B205, sales: [68, 155]} ] # 期望输出 [ {id: A001, total: 293, avg: 97.67}, {id: B205, total: 223, avg: 111.5} ]2.2 声明技术约束条件包括但不限于语言版本Python 3.9禁止使用的库如不用pandas性能要求处理10万条数据应在2秒内异常处理规范遇到无效数据应记录日志并跳过2.3 提供业务上下文解释代码的最终用途 该函数将用于电商平台每日销售报表生成后续会接入AWS Lambda需要兼容JSON序列化2.4 指定代码风格比如Google风格注释类型注解强制使用函数长度不超过50行错误码规范2.5 定义验收标准给出可执行的测试用例def test_sales_processor(): mock_data [...] result process_sales(mock_data) assert result[0][total] 293 assert avg in result[1]3. 实战案例从糟糕到优秀的prompt改造3.1 低效对话式示例用户帮我写个读取CSV的代码 AI生成pandas.read_csv示例 用户不要用pandas AI生成csv模块代码 用户需要处理中文编码 AI添加encodinggbk参数 用户有些日期列需要转换 ...平均需要6轮对话3.2 优化后的单次prompt请用Python 3.10编写CSV处理函数要求 1. 使用标准库csv模块禁用pandas 2. 处理GBK编码的销售数据文件结构如下 订单ID,客户名称,销售金额,下单时间 A1024,张三,358.5,2023/05/18 3. 将下单时间转为datetime对象 4. 统计每个客户的月消费总额 5. 返回格式{客户: {年-月: 总额}} 6. 添加完善的错误处理记录日志并跳过问题行 7. 包含3个测试用例的pytest代码4. 高级技巧结构化prompt模板对于复杂项目我使用以下Markdown模板prompt # 任务类型 [算法实现/API开发/数据处理/系统设计] # 核心需求 1. 主要功能... 2. 业务场景... # 技术规范 - 语言/框架... - 禁止项... - 性能指标... # 输入输出示例 python # 输入 input ... # 期望输出 output ... # 补充说明 - 特殊边界条件... - 代码风格要求... - 测试验收标准... 5. 常见问题与解决方案5.1 需求过于复杂怎么办采用分治法先用一个prompt描述整体架构对每个模块单独创建详细prompt最后用集成prompt组合各模块5.2 AI理解出现偏差添加否定示例不要像下面这样...使用类比类似于Java的Stream API但要用Python实现提供相似代码片段参考这段代码的风格但改用异步方式5.3 需要后续修改怎么办保留原始prompt的版本控制prompt_v1.md # 初始需求 prompt_v1.1.md # 添加异常处理 prompt_v1.2.md # 优化性能约束6. 工具链推荐Prompt管理VS Code的CodeSnippets插件Obsidian的Templates功能上下文增强Cursor的/context命令GitHub Copilot的workspace引用质量检查在prompt最后添加请分步骤解释实现逻辑后再给出代码要求AI列出三个可能被忽略的边缘情况经过上百次实践验证这种需求说明书式的prompt编写方式使得我的AI生成代码首次通过review的比例从32%提升到了89%。现在我会像对待人类开发者一样对待AI——给它清晰、完整、无歧义的需求文档这往往能获得远超预期的回报。
返回列表