写代码总踩坑?也许你只是不会向AI提问

你有没有过这样的经历:看到同事用AI工具半小时搞定一个功能,自己折腾了半天,AI给的代码却怎么都不对?明明是同一个AI,怎么差距这么大?

我有个朋友叫阿强,技术扎实,代码写得漂亮。去年公司推AI辅助开发,他也开始用。可三个月后跟我说:这玩意儿没什么用,问什么都答不对。

我看了他和AI的对话记录,哭笑不得。他问的是“帮我写个订单计算方法”,AI给了代码,缺胳膊少腿,他又问“怎么加参数校验”,AI改了,还有问题,继续问……来回折腾了十几轮。

 写代码总踩坑?也许你只是不会向AI提问 IT技术

问题不在AI,在于提问方式。阿强把AI当搜索引擎用,搜出来的结果当然不完整。

同一个AI,为什么别人能用得那么顺

你可能也发现了,同样用ChatGPT或Claude,有人用它半小时搞定核心模块,有人折腾三天还在返工。差距不在模型版本,不在付费与否,在于怎么提问。

这里面有个底层逻辑:AI没有读心术。它不知道你在做什么项目,用什么框架,有什么特殊约束。你不给背景信息,它就只能猜,猜错了太正常。

好的提问应该包含四个要素,我把它叫做STAR法则:

  • Situation——背景:我在做什么项目,用什么技术栈
  • Task——任务:具体要实现什么功能
  • Action——约束:必须用什么框架,遵循什么规范
  • Result——输出:只要代码?还是要注释?返回什么格式?

听起来有点复杂?别担心,下面有现成的模板可以直接用。

真实案例:同样一个需求,不同问法的天壤之别

假设产品告诉你:“用户下单后30分钟没支付,要自动取消订单并释放库存。”

普通人会问:帮我写个自动取消订单的功能。

结果:AI给你一段代码,不知道用延时队列还是定时任务,不知道订单表要加什么字段,不知道并发超卖怎么处理。

会提问的人会这样问:

作为后端架构师,请帮我分析这个需求,输出一份技术方案大纲:

用户下单后30分钟未支付,自动取消订单并释放库存

要求:

1.拆解成用户故事

2.列出涉及的实体和关系

3.给出API端点设计(RESTful风格)

4.指出潜在的技术风险

结果:AI输出了完整方案——用户故事卡片、订单实体设计、延时队列vs定时扫表对比、并发超卖风险分析、库存释放时机建议。这就是差距。

10个拿来就用的提示词模板

场景一:产品丢来一句话需求

直接让AI帮你拆解成技术方案,而不是自己憋。模板如下:

作为后端架构师,请帮我分析这个需求,输出一份技术方案大纲:

{需求原文}

要求:

1.拆解成用户故事

2.列出涉及的实体和关系

3.给出API端点设计(RESTful风格)

4.指出潜在的技术风险

场景二:写单元测试太烦

有多少人讨厌写单测?让AI帮你批量生成。

为以下Java方法生成JUnit 5单元测试:

{粘贴方法代码}

要求:

-覆盖正常场景、异常场景、边界场景

-使用Mockito模拟依赖

-每个测试方法命名清晰(should_xxx_when_xxx)

-断言使用assertEquals,并输出失败信息

 写代码总踩坑?也许你只是不会向AI提问 IT技术

场景三:接手老代码看不懂

让人头疼的祖传代码,丢给AI让它帮你翻译成“人话”。

解释下面这段代码的核心逻辑和设计意图:

{代码片段}

请用通俗语言说明:

1.输入输出是什么

2.关键步骤(用编号列出)

3.使用了什么设计模式(若有)

4.可能的坑或改进点

场景四:祖传代码想重构不敢动

让AI先做审查,列出所有问题点和改进建议,心里有底了再动手。

请作为资深Java架构师,审查以下代码并给出重构建议:

{代码片段}

重点关注:

-违反SOLID原则的地方

-重复代码

-可读性问题

-性能瓶颈

请提供逐条建议,并给出重构后的代码示例。

场景五:线上突然报错

日志一堆不知道从哪里看起,把堆栈信息丢给AI,让它帮你分析根因。

以下是应用抛出的异常堆栈,请分析可能的原因并给出排查思路:

{粘贴堆栈}

已知:{补充业务上下文}

请输出:

-最可能的根本原因

-需要检查哪几个类(文件名+行号)

-建议的临时修复和长期方案

场景六:接口响应太慢

怀疑SQL有问题,或者循环里有什么坑?让AI帮你扫描一遍。

以下是一个Spring Boot接口的实现,请帮我分析性能瓶颈:

{代码}

请特别关注:

-循环内的数据库查询(N+1)

-可并行化的地方

-缓存使用机会

-大对象/集合的创建

输出优化建议和示例代码。

场景七:设计数据库或优化SQL

写SQL前先问AI,让它帮你规划索引。

需求:{描述查询需求}

表结构:

{CREATETABLE语句}

请:

1.写出符合需求的SQL

2.解释执行计划是否用到了索引

3.推荐创建哪些索引(B-tree/Hash/复合)

4.给出分页优化建议(若需要)

场景八:想让代码方便以后AI也能读

生成Markdown文档,方便自己和以后的AI理解项目。

根据以下需求/代码,生成一份Markdown格式的技术知识文档:

{内容}

请包含:

-标题和简短介绍

-关键术语表

-流程图或时序图(Mermaid格式)

-示例请求和响应(若API)

-常见问题与避坑

场景九:设计方案想让别人review

找AI当“第三只眼”,帮你发现架构漏洞。

你是一位资深的系统架构师。请评审以下设计文档:

{文档或描述}

从以下角度提出问题:

-可扩展性(未来新增需求会破坏现有设计吗?)

-高可用(单点故障?降级方案?)

-数据一致性(是否有并发写冲突?)

-运维复杂度(部署、监控、扩容)

输出:至少3个疑问点和改进建议。

场景十:想把其他语言代码转成Java

找到好的Python示例,想转成Java?让AI来翻译。

将以下{语言}代码转换成Java代码:

{代码}

要求:

-使用Java17+特性(var、record、switch表达式等)

-保留原逻辑和变量命名风格

-补充必要的异常处理

-输出完整类定义

几个让AI更懂你的小技巧

给示例比描述更有效。想让AI输出特定格式的JSON,直接给一个例子,它会照着模仿。

用分隔符隔离代码。用“—我是代码—”这样的标记把代码和指令分开,AI识别更准确。

一次只问一件事。复合问题分开问,每一步的产出质量更稳定。

先让AI列出假设。让它先说明自己基于什么假设再写代码,可以减少瞎编的情况。

写在最后

AI编程时代,会提问比会写代码更稀缺。这不是危言耸听,是正在发生的事情。

阿强后来按照这套方法调整了提问方式,上个月跟我说,AI现在成了他最靠谱的帮手,每天至少帮他省两小时重复劳动。

你也可以。把这10个模板收藏起来,下次遇到具体任务直接套用,试试看效果。