每日一个 ChatGPT 使用小技巧系列之4:使用 AI 工具对 SAP ABAP 代码的编写质量进行打分

本系列之前的文章:

  • 与其整天担心 AI 会取代程序员,不如先让 AI 帮助自己变得更强大

  • 每日一个 ChatGPT 使用小技巧系列之1 - 给出提纲或者素材,让 ChatGPT 帮你写作

  • 每日一个 ChatGPT 使用小技巧系列之2 - 用 ChatGPT 研读 SAP ABAP BAPI 的实现源代码

  • 每日一个 ChatGPT 使用小技巧系列之3 - 利用角色扮演提高 ChatGPT 回复的质量

  • 使用 Midjourney 点亮程序员的 UI/UX 设计能力

  • 使用 New Bing 学习 SAP ABAP 生成 PDF 的几种技术

本文我们来尝试使用 ChatGPT 对一段已有的 ABAP 代码进行打分。

我选择的待评测的 ABAP 代码是本人于 2015 年在 SAP 成都研究院 CRM Fiori 开发团队工作时编写的一个 ABAP 类:CL_CRM_ODATA_INITIAL_LOADER.

这个类的开发背景是:我之前的公众号文章 SAP Fiori应用的三种部署方式曾经提到,SAP 成都研究院 CRM Fiori 开发团队曾经开发过下列这些 Fiori 应用:

为了让它们支持 Offline 即离线访问,在应用初始化阶段,需要借助 SMP 和 Kapsel 插件,将应用程序的业务数据,一次性从 CRM 后台系统同步到移动设备的 LocalStorage 里(有点像 SAP ERP/CRM 中间件数据同步场景里的 Initial Load).

我们需要在 CRM 系统上编写一个数据提取器,当用户在移动设备上打开 Fiori 应用,点击 Sync 按钮后,就会触发一个 OData 请求,通过 SAP SMP 发送到 Gateway 系统上,Gateway 再调用我们编写好的数据提取器,抓取业务数据,最终返回给 Fiori 应用。

数据交互示意图如下:

这个数据提取器逻辑实现的第一版,只是简单的调用每个 Fiori 应用 DPC_EXT 对应的数据读取方法(关于如何使用 SEGW 开发 Fiori 应用的 OData 服务,请参阅笔者这套 SAP OData 开发实战教程:从入门到提高),没有进行任何优化,所以存在性能问题。当时在我们开发系统的业务数据规模上简单测试过,将我们团队负责的 Fiori 应用的业务数据一次性全部同步到设备上,需要花费将近 80 秒时间。

于是我就被分配了对数据提取器进行性能优化的任务,编写了 CL_CRM_ODATA_INITIAL_LOADER.

这个类完成后,总共的代码量是 2500 多行。优化后的数据同步时间缩短到 11 秒。虽然没能进入个位数大关,但比原来的近 80 秒的性能还是提升不少。

我使用的 Prompt:

现在假设你是一个有着 30 年 ABAP 开发经验的技术专家,请你对下面这个 ABAP Class 的实现代码进行评价,分析其优缺点,从代码编写规范,可读性,可扩展性和性能,这四大方面来分析。每个方面最低分0分,最高分10分,请你就这四个方面分别进行打分。

在这段 Prompt 的末尾,我把 2500 行 ABAP 源代码贴在了后面。

我首先使用的是 ChatGPT 4.

ChatGPT 4 回复如下:

这是一个非常复杂的 ABAP 类,包含了大量的数据类型定义、公开接口方法、私有方法和类数据。这个类似乎是为了处理 CRM 中的 ODATA 初始化加载器设计的。

代码编写规范(10/10):

从代码编写规范的角度来看,这个类的代码质量非常高。所有的方法和变量都使用了清晰的名称,所有的代码行都保持了一致的缩进,所有的方法和变量都有清晰的注释。此外,代码中使用了许多 ABAP 的高级特性,如 FIELD-SYMBOLS、LOOP AT … ASSIGNING 和其他内置函数。

可读性(10/10):

这个类的代码非常容易阅读和理解。代码结构清晰,命名规范,且有大量的注释。即使对于一个没有 ABAP 背景的人来说,也可以通过阅读注释和代码来理解这个类的功能和作用。

可扩展性(7/10):

从可扩展性的角度来看,这个类的代码质量较高。大部分方法都设计为私有方法,只有几个方法是公开的接口。这意味着这个类的内部实现可以在不影响其他代码的情况下进行修改和扩展。

然而,这个类定义为 final,这意味着不能有子类继承它,这可能限制了一些扩展的可能性。

性能(8/10):

从性能的角度来看,这个类的代码质量较高。代码中大量使用了内表和字段符号,这可以大大提高代码的执行效率。此外,代码中的查询都使用了 FOR ALL ENTRIES 语句,这可以提高数据库查询的性能。然而,代码中也存在一些可能影响性能的地方,例如在循环中进行数据库查询,这可能导致性能下降。

总体来说,这是一个非常优秀的 ABAP 类,代码质量非常高,从编写规范、可读性、可扩展性和性能四个方面来看,都达到了很高的水平。

ChatGPT 点评完了我的代码,并按照我的要求,分别针对四个维度给我的代码打了分,分数还挺高。

现在轮到我对它的点评进行点评了。

  1. ChatGPT 的判断“这个类似乎是为了处理 CRM 中的 ODATA 初始化加载器设计的”是正确的,但也可能仅仅是通过我编写的类的名称 CL_CRM_ODATA_INITIAL_LOADER 来判断的,而不是基于类的 2500 行源代码。

2.“所有的方法和变量都有清晰的注释”-这个言过其实了。诚然我在某些关键代码点编写了注释,比如下图黄色区域所示。

但是我们在 SE24 或者 SE80 里开发 ABAP 类时,切换到 Source Code 模式下,就会看到 Class Builder 为每个类的方法自动生成的注释,如下图蓝色区域所示。

3.“代码中使用了许多 ABAP 的高级特性,如 FIELD-SYMBOLS、LOOP AT … ASSIGNING 和其他内置函数”- 这些不算 ABAP 的高级特性吧,而是每个 ABAP 开发人员都应该掌握的基础。

4.“代码中大量使用了内表和字段符号,这可以大大提高代码的执行效率”- 代码使用内表,和提高代码执行效率,二者没有必然联系。不过我确实使用了大量的 FIELD SYMBOL, 甚至牺牲了代码可读性作为代价,就是为了提高代码性能。这点 ChatGPT 的点评还比较到位。

5.“代码中也存在一些可能影响性能的地方,例如在循环中进行数据库查询,这可能导致性能下降”:我的代码里确实存在一处在 LOOP 循环里使用 SELECT SQL 语句的情况,不过驱动循环的内表 et_change_docs 在极端情况也就几十条,所以理论上这个发生在循环内的 SQL 读取语句不会对性能造成太大的影响。

不过我承认这是一个可以继续优化的点。ChatGPT 能从源代码中检测到这个循环内的 SQL 读取,给它点赞。

我们再来看 ChatGPT 3.5 的表现。

我这段 2000 多行的 ABAP 代码,用 ChatGPT 3.5 评测时比使用 ChatGPT 4 麻烦得多。

把代码一股脑一次性喂给 ChatGPT 3.5 是行不通的,会遇到下面这个错误消息:

The message you submitted was too long, please reload the conversation and submit something shorter.

ChatGPT 3.5 支持一次性传入的输入字符个数,比如 ChatGPT 4 小得多。因此我这个场景,只能把 ABAP 源代码分段后分批传入。

我的做法是使用如下 Prompt 分批传入:

因为代码有2000多行,我打算把代码分段发送给你。在我没有给你说 ‘发送完毕’ 的指令之前,请你不要开始分析,你只用接收代码就行了。

等你收到 '发送完毕’的指令后,再进行分析,告诉我分析的结果。

下面是第一段代码。
下面是第二段代码。
下面是第三段代码。
下面是第四段代码。
下面是第五段代码。

下图是 ChatGPT 3.5 收到第一段代码后给我的回复。

下图是 ChatGPT 3.5 收到第二段代码后给我的回复。

ChatGPT 3.5 的评价表现令我失望。首先它并没有针对整个 ABAP 类的代码进行评分,而是针对每个具体的类方法进行评价,评价内容比较敷衍和雷同。并且也没有按照我的要求,在 0~10分范围内进行评分。

我对它提出了下列的反馈:

你没有按照我的要求来执行任务。

首先,我让你对整个 Class 源代码的编写质量进行评测,而不是每个方法逐一评论。

其次,我给你提出了评测的四个维度,从0分到10分对这些维度进行打分。你的分数在哪里?

尽管 ChatGPT 3.5 及时修正了自己的错误,改为从整个代码进行评分,并且每个评分维度也从0~10分范围内打了分,但是大家看这些结果,仍然没有太大的借鉴意义。


总结

笔者之前的文章介绍了通过 ChatGPT 来为一段代码逐行生成注释,以及让 ChatGPT 阅读一段代码后提炼出其编写逻辑的例子,当时 ChatGPT 的表现还算令人满意。

本文算是一个利用 ChatGPT 进行辅助代码评审的例子,从实际结果看出,ChatGPT 4 的表现要优于 ChatGPT 3.5 不少。

本系列之前的文章

  • 与其整天担心 AI 会取代程序员,不如先让 AI 帮助自己变得更强大

  • 每日一个 ChatGPT 使用小技巧系列之1 - 给出提纲或者素材,让 ChatGPT 帮你写作

  • 每日一个 ChatGPT 使用小技巧系列之2 - 用 ChatGPT 研读 SAP ABAP BAPI 的实现源代码

  • 每日一个 ChatGPT 使用小技巧系列之3 - 利用角色扮演提高 ChatGPT 回复的质量

  • 使用 Midjourney 点亮程序员的 UI/UX 设计能力

  • 使用 New Bing 学习 SAP ABAP 生成 PDF 的几种技术

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/28435.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue中render函数浅浅详解

render介绍 众所周知,仅限于我大前端,Vue中的核心就是虚拟DOM。 通常我们都会把我们的页面结构逻辑都写在 template 中,然后再通过vue将我们的代码转换成虚拟DOM,相比于真实DOM,虚拟DOM是通过js代码处理的,…

Android 期末text的 浅浅复习

Android 编程题text 文章目录 前言一.预测编程题11.代码解析2.具体代码 二.预测编程题21.代码解析2.具体代码 三.预测编程题31.代码解析2.具体代码 四.预测编程题41.代码解析2.具体代码 五.预测编程题51.代码解析2.具体代码 六.预测编程题61.代码解析2.具体代码 总结 前言 个人…

浅浅地讲一下引用吧

文章目录 🎄 前言💖 何为引用🍺深入理解引用✈️取别名规则:权限只能缩小不能放大 😁 引用的简单应用🚙 引用和指针的区别🎉结语 🎄 前言 开启C之路,希望看了这篇文章之…

浅浅理解.net core的路由

路由: web的请求到达后端服务时,controller(控制器)会处理传入的http请求并响应用户操作,请求的url会被映射到控制器的操作方法上。 此映射过程由应用程序中定义的路由规则完成。 ASP.NET.Core MVC中的路由 路由使用一对由UseRouting和UseEnd…

FPGA图像处理 浅浅浅浅浅记

FPGA因其并行处理数据、高速和可编程等特性在图像处理方面得到广泛应用,特别是在简单算法的时候,即图像处理的预处理时,可以通过一些FPGA开发公司所配置的软件进行对算法的实现。 Vivado的一个工具:System Generator 可以直接把…

UCOS(浅浅忆)

UCOS 简介UCOSIIUCOSII 移植 F1UCOSII 任务UCOSII 消息邮箱、信号量 简介 1、实时操作系统分为硬实时和软实时两类 2、UCOSII、UCOSIII的区别 1、UCOSIII新增功能 1.1 同时支持优先级与时间片调度算法 1.2 将中断任务调节交给系统任务处理,大大缩短中断执行时间 1…

浅浅的聊一下 WebSocket

浅浅的聊一下 WebSocket 第一次看到 ws:// 和 wss:// 时候,感觉好高级啊,还有这种协议。 Websocket 历史 WebSocket是在2008年6月诞生的1。经由IEFT标准化后,2009年chrome 4第一个提供了该标准支持,并默认启用。于2011年由IEFT标…

中关村科金张杰:ChatGPT火爆背后,对话式AI在企业服务场景面临三大挑战|MEET2023...

梦晨 发自 凹非寺量子位 | 公众号 QbitAI ChatGPT火爆,也让更多人看到对话式AI的商业价值。 根据艾瑞咨询发布的《2022年中国对话式AI行业发展白皮书》,2021年对话式AI的市场规模为45亿元,带动规模126亿元。 在MEET2023智能未来大会上&#x…

可怕的人工智能ChatGPT

闲来无事想看看ChatGPT作诗的水平如何,于是让ChatGPT模仿苏轼写一首古诗,第一首如下: 读完这首诗,我差点把剩下的几根头发薅下来 接下来抱着试试看的态度给ChatGPT说一下稍微具体点的要求: 唉,古诗的规则…

python统计三国演义中人物出现的频次

方式一. 简化版 安装jieba库/numpy库编程读取《三国演义》电子书,输出出场次数最高的10个人物名字 代码注释: import numpy import jieba# numpy输出有省略号的问题,无法显示全部数据 numpy.set_printoptions(thresholdnumpy.inf)def readF…

对行业大模型的思考

深度学习自然语言处理 分享知乎:黄文灏职位:北京智源AI研究院技术负责人 看到了 Naiyan Wang[1] 和 刘聪NLP[2] 的两篇文章,都提到了对行业大模型的一些看法,有很多相同的想法。正好身边有很多人在讨论行业大模型,想要…

浅谈爆火的AIGC会不会是下一个元宇宙?

OpenAI终于发布了ChatGPT安全方法,这距离意大利政府公开宣布全面禁止ChatGPT还不到一周。 ChatGPT对隐私规则的侵犯和版权问题的触及,伴随一季度迅速在全球范围内的爆火而出现。 紧随意大利的是,德国、日本、法国、加拿大和美国&#xff0c…

斯坦福大学AI课程;创始人剽窃丑闻后 Stability AI 两名高管离职,公司前景存疑

🦉 AI新闻 🚀 Windows Copilot:微软的智能AI助手助力Windows操作系统革命 摘要:微软发布了Windows Copilot的开发者预览版更新。Windows Copilot是微软最新推出的智能助手,通过它用户可以无门槛地使用Windows的各种功…

入职仅1年,谷歌高管不满开发方向后离职!网友:“雪上加霜,谷歌AR业务要凉凉?”...

整理 | 朱珂欣 出品 | CSDN程序人生(ID:coder_life) 过去数月,谷歌的 AR 业务可谓是「动荡不安」—— 裁员、改组、 AR/VR 主管 Clay Bavor 离职。 昨天,谷歌人事变动再起, AR 操作系统团队负责人 Mark …

2023 年 4 月很火的网站

最近chatgpt持续火热,基于chatgpt的网站/工具越来越多,今天分享几个很火的网站,之前分享过的上百个实用网站同步到我的博客了 https://sushengbuhuo.github.io/blog chatdoc 一个基于 ChatGPT 的文档阅读助手http://www.chatdoc.com &#x…

现场拔网线!第四范式版GPT能力首秀,有点不一样

金磊 发自 第四范式大厦量子位 | 公众号 QbitAI 国产大模型能大战,又有一员猛将入局。 就在刚刚,第四范式自研大模型“式说”(4Paradigm SageGPT)在上线2个月后,终于来了一波能力首秀。 而且纵观整场活动的发布&#x…

2023 AI大语言模型TOP10

注:本次评测时间截至2023.5.10,评价指标主要包括语义理解、逻辑推理、情感分析、百科知识、文本质量五个维度) 今年春节档,一部《流浪地球2》点燃了沉寂许久的中国科幻电影市场,也让MOSS这一电影里冷酷无情的强人工智能…

百度搜索迎来奇点 大模型掀起代际变革

每一轮技术革命掀起的浪潮,大部多数人还没来得及思考或者布局,已经消失于海浪中。机会是给有准备的人的,要发现新兴技术的亮点,并立足自身去积极拥抱它,最后转化为自身前进的动力,跨越周期,迎来…

劲爆!154页微软GPT研究报告:人工通用智能的火花,GPT-4的早期实验

省时查报告-专业、及时、全面的行研报告库 省时查方案-专业、及时、全面的营销策划方案库 【免费下载】2023年2月份热门报告合集 ChatGPT调研报告(仅供内部参考) 文心一言、GPT3.5及GPT4应用测评对比报告 ChatGPT团队背景研究报告 ChatGPT的发展历程、原…

这 7个 AI 写作助手,太实用了

想象一下:你正在办公桌前为你的广告输入标题,但你突然思维阻塞并卡住了,可惜这时还没有神奇的软件可以帮助你想出点子。或许是有的? 2023 年,AI 写作工具似乎不可避免地会很快融入我们的工作流程中。现代知识工作者已…