0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何借助GPT-4评审、重构代码?

vliwulianw 来源:软件质量报道 2023-03-31 09:27 次阅读

我们将演示使用ChatGPT或GPT-4来检查和重构代码的技术,以及讨论一些限制,并为在编程工作流中使用这些LLM提供方便的资源。

我们将从检查和重构的方法开始,对于每种方法,我们希望尝试不同的提示和所提供的技术,以释放AI驱动的代码改进的全部潜力。

用GPT-4重构代码

重构代码之所以重要,有以下几个原因:它增强了可读性和可维护性,使开发人员更容易理解和修改代码。它还有助于防止潜在的错误,并确保您的代码遵循已建立的最佳实践。最终,重构可以产生更高效、更可靠、更健壮的软件。

GPT-4可以显著促进这一过程。通过使用GPT-4检查和评估代码,您可以快速识别需要改进的地方,并创建更清晰、更高效的代码。利用GPT-4的功能可以节省时间并减少过程中的人为错误,从而更加一致地遵守编码标准。

使旧代码现代化

通过将旧函数提供给GPT-4,并要求它根据现代编码实践进行重构,可以快速实现代码的现代化,如根据现代ES6( ECMAScript 6.0)编程标准重构以下代码。

之前:

Before:

882a9ee4-cf56-11ed-bfe3-dac502259ad0.png

After:

884aa004-cf56-11ed-bfe3-dac502259ad0.png

在这个重构版本中,GPT4迅速做出了以下改进:

增加了JSDoc注释

将tempConvert函数转换为箭头函数。

对于不可变变量,将var替换为const。

对字符串比较使用严格的相等性检查(===)。

引入一个常数来消除神奇的数字。

使用模板字面量简化return语句。

添加编码最佳实践或原则

我们公司或代码库可能会使用自己希望保留的某些编码实践和风格。对于这种情况,请向GPT4提供希望它关注的特定编码实践或风格的说明。

Prompt:检查以下代码并对其进行重构,使其更加DRY并采用SOLID编程原则。

注意,对于相同的输入,它采用了SOLID编程原则中的单一责任(Single Responsibility)原则,将函数分为3个。与前面的“现代化”步骤不同,它没有将函数转换为箭头(arrow)函数。

“通过将转换逻辑提取到单独的函数中,我们改进了代码对单一责任原则(SOLID的一部分)的遵守,因为现在每个函数都有一个明确的、集中的目的。”

886c05f0-cf56-11ed-bfe3-dac502259ad0.png

检测和修复错误

有时我们对代码可能产生的漏洞或潜在问题视而不见。让GPT-4检查和解决代码问题可以节省的不仅仅是时间。

Prompt:检查这段代码的错误并重构以修复任何问题…

故意输入(有缺陷)的程序:

888b5d06-cf56-11ed-bfe3-dac502259ad0.png

输出:

88a1be52-cf56-11ed-bfe3-dac502259ad0.png

GPT-4所做的更改:

增加了输入参数验证,以确保items是一个数组,折扣百分比是一个数字。

检查折扣百分比的边界条件,以确保它在0-100范围内。

增加了项目属性及其类型的验证,以确保价格和数量为数字。

创建样板代码(*我的最爱)

开始新项目可能会很痛苦。GPT-4不知道业务逻辑,但它可以用于第一天要写的、枯燥的样板代码。从技术上讲,这不是重构,但它很神奇,可以成为编程生命周期中某个过程的一部分。

Prompt:为我写一个样板Node.js函数,它将接受一个User类型的变量,验证用户具有正确的权限,从postgres数据库中获取一个项目类型Posts的数组并返回它们。为业务逻辑留下注释。

代码转换(迁移)

需要将代码从一种语言转换为另一种语言的原因有很多。我们发现一种语言的代码库需要替换为另一种语言的代码,我们需要进行代码的移植;或者老板读了一篇关于最新前端框架的文章,要求我们把老程序移植到 {拆分的新代码库}。 在任何情况下,GPT-4都可以通过简单的提示符提供帮助。

Prompt:在Rust中重写以下代码:…

向代码中添加注释

如果代码是自解释的,但需要注释,这可以节省大量时间。

Prompt:向以下代码添加注释…

更好的重构技巧

像生活中的许多事情一样,使用GPT-4,我们投入越多,得到的回报就越多。在这种情况下,提供更多的背景、说明和指导通常会产生更好的结果。

以下是改进代码重构的技巧和技巧:

拆分提示: 尝试将提示和预期结果拆分为多个步骤。保持提示有一个单一的结果已经被证明比组合提示产生更好的结果。例如,要求评审,然后要求基于评审响应的重构。随着llm增加他们的令牌限制,这可能会变得不那么重要。

举例: 提供预期的输入、数据和输出,以提高准确性和质量。

具体一点: 不要害怕列出你想要的,你知道的,需要的,不应该包括的。

要求它反射: 一种叫做反射的技术已经被证明可以提高GPT4的准确性。基本上就是问它‘你为什么错了?’或者让它反思和检讨自己的反应。

限制

这篇文章中,我们已经见识了很强的AI,但是这些模型并不完美,(目前)还不能准确地复制业务逻辑。下面是使用GPT-4检查或重构代码时需要注意和避免的事情:

它可能是(自信地)错误的: GPT4被训练得听起来令人信服,但这并不意味着它总是正确的。另一篇关于用ChatGPT重构Golang的很棒的文章报道了“它摆脱了类型检查,并自信地解释说,将非int值断言为int类型将返回int类型的零值,但这是不正确的,会引起恐慌”。

从长远来看,节省时间可能并不值得: 当然,GPT4可以在一分钟内生成50行代码,但如果它不适合我们的代码库,则可能需要花费45分钟来调试和调整它,这样还不如自己写。

它可能会过时: 科技世界发展很快。“GPT-4通常缺乏对其绝大部分数据被切断后(2021年9月)发生的事件的了解。” 您可能会遇到任何新更新的库、框架或技术的问题。

结论

人工智能驱动的编程只是一种新事物,但它会一直存在下去。如果使用得当,它可以节省时间,并帮助我们编写更好的代码。我希望您喜欢本文,并掌握了一些提高编程效率或错误处理的新技能。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 人工智能
    +关注

    关注

    1776

    文章

    43871

    浏览量

    230621
  • GPT
    GPT
    +关注

    关注

    0

    文章

    302

    浏览量

    14869

原文标题:如何借助GPT-4评审、重构代码?

文章出处:【微信号:软件质量报道,微信公众号:软件质量报道】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    GPT-4发布!多领域超越“人类水平”,专家:国内落后2-3年

    电子发烧友网报道(文/吴子鹏)北京时间3月15日凌晨,人工智能研究公司OpenAI正式发布了其下一代大型语言模型GPT-4。目前,ChatGPT的Plus订阅用户已经可以使用GPT-4,其他用户需要
    的头像 发表于 03-16 01:58 4082次阅读
    <b class='flag-5'>GPT-4</b>发布!多领域超越“人类水平”,专家:国内落后2-3年

    ChatGPT升级 OpenAI史上最强大模型GPT-4发布

    ChatGPT升级 史上最强大模型GPT-4发布 OpenAI正式推出了ChatGPT升级版本,号称史上最强大模型GPT-4发布。OpenAI期待GPT-4成为一个更有价值的AI工具。 GPT
    的头像 发表于 03-15 18:15 2420次阅读

    Open AI团队发推正式宣布:GPT-4来了!

    对于 GPT-4 的实际能力,团队也给大家提前打了一针强心剂,即便 GPT-4 在许多现实世界场景中能力不如人类,但在各种专业和学术基准上的表现,还是超过了人类的平均水平。
    的头像 发表于 03-16 11:10 1697次阅读

    关于GPT-4的产品化狂想

    GPT-4是条件,而不是结果
    的头像 发表于 03-26 10:48 2595次阅读
    关于<b class='flag-5'>GPT-4</b>的产品化狂想

    GPT-4是这样搞电机的

    GPT-4写电机基础程序没问题
    的头像 发表于 04-17 09:41 674次阅读
    <b class='flag-5'>GPT-4</b>是这样搞电机的

    一个基于GPT-4代码搜索引擎,开源了!

    于是,一个名为 Bloop 的代码搜索引擎应运而生,它的存在,彻底打破了以往传统的代码搜索方式,采用基于 GPT-4 的 AI 智能模型,成功实现用自然语言,语义化的代码搜索方式!
    的头像 发表于 04-27 14:25 925次阅读
    一个基于<b class='flag-5'>GPT-4</b>的<b class='flag-5'>代码</b>搜索引擎,开源了!

    我体验了GPT-4从编程‘神器’变成编程‘智障’!

    然而,与之前不同的是,仅仅阐明需求还不够。GPT-4 像一个糟糕的工程师,没有搞清楚整体状况,就根据我的反馈做出了反应,更可怕的是,它还开始随意修改一些不需要改动的代码
    的头像 发表于 05-06 10:10 1071次阅读
    我体验了<b class='flag-5'>GPT-4</b>从编程‘神器’变成编程‘智障’!

    GPT-4 的模型结构和训练方法

    GPT-4 的发布报道上,GPT-4 的多模态能力让人印象深刻,它可以理解图片内容给出图片描述,甚至能在图片内容的基础上理解其中的隐喻或推断下一时刻的发展。
    的头像 发表于 05-22 15:21 2010次阅读
    <b class='flag-5'>GPT-4</b> 的模型结构和训练方法

    微软提出Control-GPT:用GPT-4实现可控文本到图像生成!

    该研究提出了一个简单而有效的框架 Control-GPT,它利用 LLM 的强大功能根据文本 prompt 生成草图。Control-GPT 的工作原理是首先使用 GPT-4 生成 TikZ
    的头像 发表于 06-05 15:31 489次阅读
    微软提出Control-<b class='flag-5'>GPT</b>:用<b class='flag-5'>GPT-4</b>实现可控文本到图像生成!

    GPT-4处于一个什么样的编码地位

      面试环节第一步——回答问题,写软件需求 面试环节第二步——上手写代码 测试用例   比 ChatGPT 背后 GPT-3.5 更为强大的模型 GPT-4,已正式对外发布。在 OpenAI 官方
    的头像 发表于 06-16 10:42 436次阅读
    <b class='flag-5'>GPT-4</b>处于一个什么样的编码地位

    GPT-4 Copilot X震撼来袭!AI写代码效率10倍提升,码农遭降维打击

    来源:新智元【导读】GPT-4加强版Copilot来了!刚刚,GitHub发布了新一代代码生成工具GitHubCopilotX,动嘴写代码不再是梦。微软真的杀疯了!上周,微软刚用GPT-4
    的头像 发表于 04-04 16:35 591次阅读
    <b class='flag-5'>GPT-4</b> Copilot X震撼来袭!AI写<b class='flag-5'>代码</b>效率10倍提升,码农遭降维打击

    GPT-4已经会自己设计芯片了吗?

      GPT-4已经会自己设计芯片了!芯片设计行业的一个老大难问题HDL,已经被GPT-4顺利解决。并且,它设计的130nm芯片,已经成功流片。 GPT-4,已经可以帮人类造芯片了! 只用简单的英语
    的头像 发表于 06-20 11:51 609次阅读
    <b class='flag-5'>GPT-4</b>已经会自己设计芯片了吗?

    OpenAI宣布GPT-4 API全面开放使用!

    OpenAI 在博客文章中写道:“自 3 月份以来,数百万开发者请求访问 GPT-4 API,并且利用 GPT-4 的创新产品范围每天都在增长。” “我们设想基于对话的模型未来可以支持任何用例。”
    的头像 发表于 07-12 14:55 881次阅读

    GPT-4没有推理能力吗?

    今年三月,OpenAI 重磅发布了 GPT-4 大模型,带来了比 ChatGPT 背后 GPT-3.5 更强的推理、计算、逻辑能力,也引发了全民使用的热潮。在各行各领域研究人员、开发者、设计师的使用过程中,「GPT-4 是最为领
    的头像 发表于 08-11 14:20 671次阅读
    <b class='flag-5'>GPT-4</b>没有推理能力吗?

    微软Copilot全面更新为OpenAI的GPT-4 Turbo模型

    起初,Copilot作为Bing Chat AI助手推出,初期采用GPT-3.5模型,随后升级至GPT-4取得显著进步,如今再次更新至性能卓越的GPT-4 Turbo模型,这无疑将使得Copilot功能再上新台阶。
    的头像 发表于 03-13 13:42 251次阅读