第 5 章 理解生成的代码:回顾、完善、拥有
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
您已经学会了如何提示人工智能生成代码,此时您很可能已经使用这些技术生成了一些代码。 现在到了一个关键阶段:确保代码的正确性、安全性和可维护性。
作为开发人员,你不能只接受人工智能的输出,然后轻率地将其发送出去。您需要对其进行审查、测试、可能的改进,并将其与代码库的其他部分集成。本章将重点介绍如何理解人工智能给你提供的内容,如何迭代编辑和调试,以及如何将代码作为项目的一部分完全掌握在自己手中。
本章内容包括
-
根据你的初衷解释人工智能代码
-
多数解决方案 "现象,或为什么人工智能生成的代码看起来往往像一个常见的解决方案
-
审查代码清晰度和潜在问题的技巧
-
当人工智能编写的代码无法按预期运行时进行调试
-
为风格或效率重构代码
-
编写测试以验证代码的行为
掌握了这些技能,你就能自信地将人工智能的贡献集成到你的项目中。
从意图到实现:理解人工智能的解释
当你拿到人工智能的代码时,第一步应该是将它与你的意图(你给出的提示)进行比较。代码是否满足了你提出的要求?有时,人工智能可能会对你的要求稍有误解,或者只是部分地实现了你的要求。
仔细阅读代码。在脑海中或纸上逐步完成:
-
跟踪它对典型输入的处理。
-
如果你的提示有多个部分("做 X 和 Y"),验证人工智能是否都做了。
-
确保人工智能没有添加您没有要求的功能--有时它会添加一个它 "认为 "有用的额外功能,比如添加日志或参数,这可能是好的,也可能是坏的。
就像阅读同事的代码一样,如果有不清楚的地方,请记录下来。如果你想找一个合理的理由,你可能会找到。如果找不到,就提出疑问或考虑将其删除。
例如,如果你要求一个质数检查器,而人工智能代码也会为每个数字打印类似 "检查 7...... "的内容,这可能是你提示它的一个假象,也可能是它的训练数据中的一种模式(有些教程代码会打印它的进度)。如果您不希望出现这种情况,请计划将其删除或提示人工智能将其删除。
还要确保按照你的预期处理边缘情况。 如果你想让它处理空输入,它能做到吗?如果输入可能是None 或负数,人工智能是否考虑到了这一点?
如果你的 prompt 有什么地方模棱两可,人工智能不得不选择一种解释,请确定在哪里出现了这种情况。也许你没有指定输出格式,人工智能选择了打印结果而不是返回结果。现在你必须决定是接受这种情况还是修改代码。
理解阶段至关重要,千万不要跳过。即使要对代码进行测试,通过阅读来理解代码也很重要,因为测试可能无法涵盖所有内容(对于一些显而易见的事情,阅读会更快)。
最后,考虑人工智能的假设。人工智能通常会选择 "多数 "或最常见的解释(这就引出了下一节)。
多数 "问题:最常见并不意味着最合适
在大量代码基础上训练出来的人工智能模型通常会产生在训练数据中最具代表性的解决方案(或最简单的解决方案)。 我把这称为多数解决方案效应。这在一般情况下是正确的,但对你的具体情况来说可能不是最好的。
例如,如果你在没有更多上下文的情况下询问搜索算法,人工智能可能会输出一个基本的线性搜索,因为这很直接也很常见。也许你实际上需要的是二进制搜索,但人工智能并不知道效率是关键,因为你没有说出来。线性搜索适用于许多中等情况,但如果性能是关键,就不适用了。
同样,人工智能可能会使用全局变量,因为许多简单的示例都会这样做,但在你的项目中,这种做法也许是不可接受的。
请注意,人工智能的解决方案可能会针对一般情况进行优化。作为人类开发人员,您对上下文的洞察力是人工智能所缺乏的。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access