✏️ 成为提问(Prompt)工程师,让 AI 协助你优化代码

2,189 阅读4分钟

AI 简介

像 ChatGPT/New Bing 这类 AI 属于人工智能中的 NLP 领域,也就是自然语言(英文、汉语等)处理领域。换句话说就是让计算机来理解并正确地操作自然语言,完成我们给它指定的任务。

准备工作

  1. 你需要想办法注册一个 ChatGPT 账号,或者像本文一样直接使用基于 GPT-4 的 New Bing AI 来完成你的代码优化
  2. 由于 AI 的回答具有一定的随机性,你应该将 AI 设置为精准回答,而不是富有创造性的回答,这能有效避免 AI 给出错误答案

image.png

如何成为提问(Prompt)工程师?

想 AI 提问的时候,应该尽可能的详细一些,下面分享一些常见的提问案例作为参考。

低效

比较低效的,是这种非常简单的提问方式:

优化代码:code

用 Bing AI 测试:

image.png

可以看到 Bing AI 并没有立即优化你的代码,而是阅读你的代码后,用询问的方式来确定是否要优化这段代码...

合格

优化你提出的需求,增加一点要求和约束,比如 “帮我” “这段”。

帮我优化这段代码:code

image.png

这时候 Bing AI 就能直接给出一段优化后的程序供你参考了,省去了一次多余的对话时间。

高效

  • 继续优化需求,用【】对要处理代码的范围进行约束
  • 添加附加条件,比如 “我不想用 if 语句了”
帮我优化【】中的代码,我不想用 if 语句了:【code】

image.png

专业

采用 设定角色 + 提出需求 + 附加条件 的提问方式,比如角色设定为高级前端工程师,需求是优化给出的代码,附加条件是不想要 if 语句并给出优化后的代码。

先设定角色

你现在充当一名高级前端工程师

然后提问

帮我优化【】中的代码,我不想要 if 语句并请你给出优化后的代码:【code】

这是一份比较通用且高效的提问格式,建议大家以后常用这种方式进行提问。

代码优化的方向

这里要求提问工程师本身具备一定的代码优化能力,了解基本的代码优化方向,比如:

  • 优化代码结构
  • 优化代码可读性
  • 优化算法和数据结构
  • 优化代码的性能和效率

或者具备一些具体的优化点,比如:

  • 干掉可优化的循环
  • 干掉可优化的 if 语句
  • 缓存常用的值
  • 避免重复的代码
  • 消除多余的语句

再直白一点,比如:

  • 双循环优化为单循环
  • 表驱动编程代替 if else 语句
  • switch 代替 if else 语句
  • && 或 || 或 三元运算符代替 if 语句
  • 提取全局变量、常量
  • 将重复的代码优化成函数
  • 添加详细的注释

这些优化方向,你都可以在向 AI 提问的时候,添加到附加条件里,指定 AI 往这些地方进行优化。

示例:

帮我优化【】中的代码,将双循环优化为单循环并使用 && 或 || 或 三元运算符代替 if 语句,请你给出优化后的代码:【code】

始终需要检查 AI 的回答

不能无脑相信 AI 帮你优化的代码,它常常也是会给出一个看似正确,实则有 BUG 的代码程序。截取一段 GPT-3.5 的优化案例作为参考:

image.png

哪怕是同一段代码,由于提问的方式不同,AI 给出的答案也可能会不同,并且答案还可能有问题。

你能检查出来图中哪一段代码是有 BUG 的吗?

可能需要你拆解代码

如果一大段代码投喂过去,Bing AI 可能并不会帮你优化(特别是在你使用最低效的提问方式的时候):

image.png

这时候需要将你的代码拆解后一点点投喂给它,比如你可以以函数为单位,一个一个函数叫他帮你优化,并且尽可能将你的提问语按照专业的方式进行提问。

可能需要你提供更多上下文

有时候一个功能模块的代码并不在同一个文件里,这时候就需要你将相关的代码都依次投喂给 AI,让他阅读后再提出你想要优化的需求。

End

感谢阅读,希望这篇文章能帮助你学会更高效的向 AI 提问的方式,最终利用 AI 来协助你优化代码。