当前位置: 首页 > news >正文

代码没注释?一个方法几百行?

干程序员的都有接收别人的代码的经历,大部分时候,我们都会偷偷骂一句“这人是傻逼吧,这代码写的这么烂!”

“一个方法写几百行,还没有注释,鬼知道写的什么东西!”

现在,你不需要为这个事情担心了。AI 可以帮你生成注释,代码拆分。

AI 帮你生成注释

接手别人的代码,很多人写代码都没有注释,变量命名也是一言难尽,这个时候,你直接把代码输入给 GPT,它能很好的帮助你理解代码的意思,减少接手别人代码的痛苦。

prompt:

一段 Spring Webflux 代码

大模型返回:

这段Java代码的意思是:

首先,定义了两个 Mono 对象:mono 1和 mono2,它们调用两个 TestServiceImpl 类的 request() 方法并返回一个 String 类型的结果对象。

然后,使用 Mono.zip() 方法将 mono1 和 mono2 对象组合起来,当它们都完成后,将结果以 Tuple(元组)类型传递给 map() 方法。在 map() 方法中,根据子 Mono 的执行情况,将其结果对象合并成一个 String 对象。如果第二个 Mono 对象返回了结果,则将两个结果字符串合并;否则,只返回第一个 Mono 对象的结果字符串。

最后,使用 Mono 对象的 block() 方法来阻塞等待结果,并将结果打印到控制台执行。如果没有结果可以使用,则返回 mono1 对象作为默认值。该代码实现的功能是等待两个 Mono 对象都完成后,将它们的结果对象合并为一个字符串。

AI 帮你学习你完全不熟悉的语言

GPT 能支持各种语言,当你工作中碰到了不熟悉的语言,但是老板又让你接手这种项目的时候,GPT 就派上用上了,它能很好的帮我们快速学习代码,了解业务。

比如下面这个例子,lua 是一种现在用的不多的语言了,但是 GPT 照样能很好的解释代码的意思。

prompt:

content = content:gsub(‘USERNAME=([^%c]+)\n+’, ‘’) — 上面是一行 lua 代码,请你解释意思

作为一个完全没学过 Lua 语言的阿七来说,我一眼觉得这行代码的意思是获取 content 中的 USERNAME 字段的值。

还有,阿七不是那么自信,把问题抛给了 GPT。

大模型返回:

这行 Lua 代码的意思是:

使用 Lua 中的 gsub 函数,将字符串变量 content 中满足特定模式的内容进行替换。

具体地,这行代码使用正则表达式 ‘USERNAME=([^%c]+)\n+’ 来匹配 content 字符串中以 “USERNAME=” 开头,紧跟着一个或多个非控制字符(除了控制字符外的任意字符),并以一个或多个换行符结尾的部分。匹配到的部分将被替换为空字符串。

换句话说,该代码的目的是将 content 字符串中形如 “USERNAME=” 开头的行(行结尾有一个或多个换行符)删除或替换为空字符串。

AI 帮你重构代码

我们经常能在工作中看到写几百行甚至上千行的方法,碰到这样的代码,我们内心只有一句 MMP 能表达。

AI 时代,不用为此忧心了。

我尝试把我碰到的几百行的方法输入给 GPT,我发现它能很好的帮助我拆解长方法。

但是公司的代码不好拿出来秀,我在网上找了一段代码,我们可以看看效果。

prompt:

List purchaseInfoList = sheet.getPurchaseInfoList().stream().filter(purchaseInfo ->
purchaseInfo.getExteriorOperation().getExteriorPart().getExteriorOperationList().stream()
.filter(exteriorOperation -> exteriorOperation.getProcessState().equals(ExteriorOperation.ProcessState.PROCESSING)).count() != 0
————————————————
上面的 Java 代码太难阅读了,非常影响代码理解,请帮我拆分上面的 Java 代码,不改变代码意思,但是更容易读懂

输出:

以下是拆分后的 Java 代码,更易于理解:

List<PurchaseInfo> purchaseInfoList = sheet.getPurchaseInfoList();List<PurchaseInfo> filteredPurchaseInfoList = purchaseInfoList.stream().filter(purchaseInfo -> {List<ExteriorOperation> exteriorOperationList = purchaseInfo.getExteriorOperation().getExteriorPart().getExteriorOperationList();long processingCount = exteriorOperationList.stream().filter(exteriorOperation -> exteriorOperation.getProcessState().equals(ExteriorOperation.ProcessState.PROCESSING)).count();return processingCount != 0;}).collect(Collectors.toList());

大模型返回:

  1. 首先获取 sheet 对象中的 purchaseInfoList 列表。
  2. 使用 stream() 方法将 purchaseInfoList 转换成流。
  3. 使用 filter() 方法过滤出符合条件的 PurchaseInfo 对象,条件为:该对象中的 ExteriorOperation 对象列表中,至少有一个对象的 processState 属性为 PROCESSING
  4. filter() 方法中,使用 lambda 表达式实现过滤条件。首先获取当前 PurchaseInfo 对象中的 ExteriorOperation 对象列表,然后使用 stream() 方法将其转换成流。
  5. ExteriorOperation 对象流中,使用 filter() 方法过滤出 processState 属性为 PROCESSING 的对象,然后使用 count() 方法获取符合条件的对象数量。
  6. 最后,判断符合条件的对象数量是否不为 0,如果是,则表示该 PurchaseInfo 对象符合过滤条件。
  7. 使用 collect() 方法将符合条件的 PurchaseInfo 对象收集到一个新的列表中,并返回该列表。

我们看到,GPT 不仅帮帮我们做了代码拆分,还格式化了我们的代码,让代码可读性更高,甚至还解释了每段代码的意思。

是不是很棒,赶紧去试用吧!

相关文章:

代码没注释?一个方法几百行?

干程序员的都有接收别人的代码的经历&#xff0c;大部分时候&#xff0c;我们都会偷偷骂一句“这人是傻逼吧&#xff0c;这代码写的这么烂&#xff01;” “一个方法写几百行&#xff0c;还没有注释&#xff0c;鬼知道写的什么东西&#xff01;” 现在&#xff0c;你不需要为…...

Angular-04:指令

① 内置指令1.1 *ngIf 结构指令1.2 [hidden] 属性指令1.3. *ngFor 结构指令1.4 *ngSwitch 结构指令 ② 自定义指令用法 指令是angular操作dom的途径&#xff0c;分为属性指令和结构指令。属性指令&#xff1a;修改元素的外观或行为。使用 [ ] 包裹。结构指令&#xff1a;增加、…...

[SpringCloud] Eureka 与 Ribbon 简介

目录 一、服务拆分 1、案例一&#xff1a;多端口微服务 2、案例二&#xff1a;服务远程调用 二、Eureka 1、Eureka 原理分析 2、Eureka 服务搭建&#xff08;注册 eureka 服务&#xff09; 3、Eureka 服务注册&#xff08;注册其他服务&#xff09; 4、Eureka 服务发现…...

【Python 零基础入门】常用内置函数 再探

【Python 零基础入门】内容补充 1 常用内置函数 Python 简介为什么要学习内置函数集合操作len(): 计算长度sorted(): 排序all(): 检查所有元素any(): 检查任一元素filter(): 过滤元素map(): 应用函数zip(): 组合元素 文件操作和输入输出open(): 打开文件read(): 读取文件write(…...

10.30二叉树一些性质,找公共祖先(一般与搜索树),操作的复杂度,选择题细节

课上 一些结论&#xff0c;性质 n0,n1,n2指的是子结点的数量&#xff0c;n0没有子节点&#xff0c;叶子结点 n2*n2n11,若n1为奇数&#xff0c;则n为偶数&#xff0c;不然&#xff0c;则为奇数 满二叉树 没有度为1的结点&#xff0c;即每个结点要么没有孩子结点&#xff0c;要么…...

亮氨酸脯氨酸肽——一种新型的医药中间体研究肽

亮氨酸脯氨酸医药中间体肽是一种合成&#xff08;人造&#xff09;激素&#xff0c;类似于大脑中产生的天然激素。它用于治疗许多医疗问题&#xff0c;包括&#xff1a; 子宫平滑肌瘤&#xff08;子宫肌瘤&#xff09;出血引起的贫血&#xff0c;或晚期或晚期前列腺癌症&#…...

Ubuntu 22.04 开机闪logo后卡在/dev/sda3: clean

环境 Vmware 17.0.0&#xff0c;CPU 2&#xff0c;内存4G&#xff0c;硬盘50G Ubuntu 22.04 问题描述 开机 --> 显示两行代码 --> 显示ubuntu logo --> 左上显示两个代码卡住不动 原因分析 1、网上大多说显卡驱动&#xff0c;最近没安装相关软件&#xff0c;也没…...

avue-crud 自定义列

基本设置&#xff1a; option: {columnBtn: false,refreshBtn: false,addBtn: false,delBtn: false,editBtn: false,viewBtn: false,searchShowBtn: false,height: auto,maxHeight: auto,calcHeight: 70,searchLabelWidth: 58,tip: false,searchShow: false,searchMenuSpan: 6…...

达索系统SOLIDWORKS 2024 装配体新增功能

如今市场环境紧迫&#xff0c;许多企业在这样的情形之下&#xff0c;都需要尽快将产品推向市场&#xff0c;赢得头筹。所以产品设计需要快速进行装配验证&#xff0c;以确保产品功能和性能的准确性和可靠性&#xff0c;同时原型或样机的制造和装配需要尽快完成&#xff0c;以满…...

电脑入门:电脑专业英语500词,供新手参考

1. file n. 文件;v. 保存文件 2. command n. 命令,指令 3. use v. 使用,用途 4. program n. 程序 5. line n. (数据,程序)行,线路 6. if conj. 如果 7. display vt. 显示,显示器 8. set v. 设置,n. 集合 9. key n. 键,关键字,关键码 10. list n. 列表,显示,…...

采购管理工具-采购软件-Leangoo免费看板工具

我们可以按照公司的实际情况定制采购流程。 1、在Leangoo免费看板工具中创建一个项目&#xff0c;项目类型建议选择“轻量级协作”&#xff0c;项目模版建议选择“人事与行政” 系统会自动为您创建四个看板&#xff0c;如下图&#xff1a; 图1 2、在项目内创建一个 “办公室采…...

【23真题】大神凭这套拿452分!看看你能拿多少?

今天分享的是23年福州大学866的信号与系统试题及解析。23年福州大学新一代电子信息的最高分是452分&#xff01;但是我看不到单科分数。按照75&#xff0c;75&#xff0c;150&#xff0c;150。也就是只有450&#xff0c;说明这个同学&#xff0c;专业课和数学几乎拿满&#xff…...

大数据之LibrA数据库系统告警处理(ALM-12002 HA资源异常)

告警解释 HA软件周期性检测Manager的WebService浮动IP地址和数据库。当HA软件检测到浮动IP地址或数据库异常时&#xff0c;产生该告警。 当HA检测到浮动IP地址或数据库正常后&#xff0c;告警恢复。 告警属性 告警参数 对系统的影响 如果Manager的WebService浮动IP地址异常…...

CSS基础入门04

目录 1.内边距 1.1基础写法 1.2复合写法 2.外边距 2.1基础写法 2.2复合写法 2.3块级元素水平居中 3.去除浏览器默认样式 4.弹性布局 4.1初体验 5.flex 布局基本概念 6.常用属性 6.1justify-content 6.2align-items 1.内边距 padding 设置内容和边框之间的距离. …...

LeetCode2741.特别的排列 状压

暴力枚举的话是n&#xff01; 考虑状压DP&#xff0c;其实就是用二进制表示状态 再进行暴力 同时加一个记忆化就好了 这里有常用技巧&#xff1a; 全集&#xff08;1<<n&#xff09;-1 增加某个元素 x | (1<<i) 删除某个元素 x & ~(1<<i) const i…...

【Linux】Centos 8 服务器部署:阿里云域名注册、域名解析、个人网站 ICP 备案详细教程

目录 一、背景信息 二、操作步骤 &#xff08;1&#xff09;查询域名 &#xff08;2&#xff09;加入域名清单 &#xff08;3&#xff09;确认订单信息 &#xff08;4&#xff09;支付 &#xff08;5&#xff09;等待域名实名认证通过 三、域名注册成功 四、查看域名…...

Sass、Less和Stylus之间有什么主要的区别?

Sass、Less和Stylus是三种常见的CSS预处理器&#xff0c;它们在功能和语法上有一些区别。以下是它们之间的主要区别&#xff1a; 1&#xff1a;语法差异&#xff1a; Sass使用缩进的语法&#xff0c;使用类似于Python的缩进来表示嵌套规则和块级作用域。Less和Stylus使用类似…...

第八章 软件测试自动化

一、学习目的与要求 通过本章的学习&#xff0c;了解自动化测试应考虑的各种因素及如何衡量自动化测试成本&#xff0c;掌握自动化测试和手工测试的优缺点&#xff0c;能正确选择软件测试策略&#xff0c;了解测试工 具的分类和使用目的&#xff0c;熟悉常用的测试工具&#xf…...

科大讯飞勾勒生成式AI输入法“模样”,开启下一代输入法革命

回顾国内第三方输入法赛道近十余年的发展&#xff0c;移动互联网的市场红利催生了科大讯飞、百度、搜狗等颇具规模和实力的头部厂商。与此同时&#xff0c;历经多年、多方角逐&#xff0c;第三方输入法市场进入存量阶段&#xff0c;升级技术、优化用户体验来挖掘存量&#xff0…...

OV-VG: A Benchmark for Open-Vocabulary Visual Grounding

OV-VG: A Benchmark for Open-Vocabulary Visual Grounding 一、Abstract 写在前面 又是一周周末&#xff0c;光调代码去了&#xff0c;都没时间看论文了&#xff0c;汗。   这是一篇关于开放词汇定位的文章&#xff0c;也是近两年的新坑&#xff0c;但是资源也是需要不少。 …...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...