如何使用ChatGPT提升自己的“码”力?

news/2024/12/5 3:28:19/

如何使用chatGPT提升自己的"码"力?

  • 代码评审(CodeReview)
  • 代码优化
  • 代码释义
  • 提供解决方案
  • 代码生成
  • 设计模式和架构建议
  • 学习新知识
  • 总结

  ChatGPT是什么,我就不用再多介绍了吧!相信大家已经看到了它在文本领域所展现出来的实力,虽然目前的效果依旧无法比拟专业文字工作者,但其文字能力也超过了绝大多数普通人,主要还相当的便宜,让不少文字相关工作者瑟瑟发抖。不过今天我们不讨论它的文字能力,而是讨论下它的代码能力。

  经过我两个月的使用,我发现ChatGPT目前还完全无法替代程序员,尤其是在一些强上下文的编程场景下,比如一些重业务的编程场景。而在一些比较通用化的编程场景下,其展现出来的能力尚可。总结起来,我们程序员目前不必太担心ChatGPT抢我们饭碗的情况,但是可以利用它来完成一些编程相关的事,把它当做一个工具来大幅度提升我们的工作效率,下面是一些我总结的可以利用ChatGPT的一些场景,希望对大家有所帮助。

代码评审(CodeReview)

  可以使用ChatGPT对已有代码进行CodeReview,从而提早发现问题。ChatGPT可以检测出语法错误
、代码风格问题、潜在的bug、性能问题…… 然而,需要注意的是,ChatGPT可能无法像专业的代码审查工具或经验丰富的开发者那样全面和准确地检查代码,而可能还会出现错误。所以在实际应用中,建议只将其作为辅助工具,与其他代码审查工具和人工审查相结合。

参考prompt:

请对以下代码进行CodeReview,指出代码中可能存在的问题,包括但不仅限于代码风格、潜在bug、性能问题、代码可读性、代码安全性等问题。

代码优化

  如果你觉得代码评审还不够,你可以直接让ChatGPT帮你优化并重写下整个代码,当然你也可以要求它返回优化的理由。 不过需要和代码评审注意同样的问题,ChatGPT的表现无法像专业的程序员一样,依旧是建议将其作为辅助工具,参考其给出的结果,再结合专业人士的建议对代码做优化。

参考prompt:

请在保持原有代码逻辑的情况下优化下以下代码,尽可能提升代码的可读性、可维护性、性能……,并给出优化的理由。

备注:ChatGPT在代码评审和代码优化方面表现出的水平,我个人认为基本上相当于高级工程师的水平,但距该领域资深工程师或者专家还是差一大截的,所以我个人还是比较建议初级工程师实用ChatGPT来对自己的代码做一些优化,顺便也学习一下升代码指令的方法。

代码释义

  程序猿日常工作中的很大一部分时间都是在维护老的代码,尤其是维护一些别人写的、没有注释的代码,如果需要修改一些逻辑,还要尝试去理解原有代码,相当痛苦。这个时候就可以将代码给到ChatGPT,让它帮忙生成一些代码释义,可以一定程度减轻你理解代码的负担。

参考prompt:

请解释以下代码的逻辑,请在代码中合适的地方增加注释。

提供解决方案

  在我们日常工作中,经常会遇到一些问题不知道如何编程去解决,尤其是新手程序员,这类的问题非常多,这个时候给ChatGPT描述清楚你遇到的问题,让它给出一些建议和解决方案。此类问题无特定的prompt可以参考,但我可以给你举个例子。

  我们最近在生产环境遇到一个线上问题,由于我们数据量增长,同一个设备的kafka消息可能同时被多台机器消费,导致数据状态不对,这个时候我可以要求ChatGPT给我一些解决问题的建议,ChatGPT对此问题的回答如下:
在这里插入图片描述
可以用ChatGPT解决的编程问题非常多,再举一些小例子:比如如何解决多线程相互间信息同步的问题、代码中怎么加Cache、java中有哪个开源包中有immutable的集合类可以直接使用??

代码生成

对于一些给定的问题,ChatGPT其实是可以直接生成相关代码的,而且生成的代码指令也是可用的。比如我上周就用ChatGPT生成了一份分布式锁注解的代码,可用性相当高。
在这里插入图片描述
  整个上下文太长了,我就无完整贴出来了。针对分布式锁注解这个问题,ChatGPT不仅给出了注解接口代码,也给出来完整的切面实现代码,甚至给出了具体的使用示例,完整的demo分分钟就可以跑起来。

备注: 分布式锁这个问题我问了ChatGPT好几次,每次回答还是略有差异,甚至有些代码还稍微有些问题,需要自己识别下。总之ChatGPT的答案,目前不建议全信,需要自行做好甄别。

  还有一些代码场景很实用用ChatGPT来做,比如用它来生成某段代码的单元测试。虽然它无法考虑到各种各样的数据case,但至少它能帮你把单测的基础代码写好,你只需要完善其他数据即可。

设计模式和架构建议

  上面一些例子是如何在代码和实现的层面上利用好ChatGPT,但实际上,ChatGPT 在更高层面上也可以提供一些建议,比如代码设计甚至是架构设计上。比如我们系统现在遇到一个问题,由于是单体应用,上面运行了http服务、kafka消费者、定时任务,可能会存在不同任务相互抢占资源的情况,因此,我们一直计划对服务进行拆分,这个时候可以征求下ChatGPT的建议。

在这里插入图片描述
  从ChatGPT的回答来看,还是相当有参考价值的。

学习新知识

  如果你在某个领域是资深工程师,我肯定ChatGPT在这方面肯定没有你强,但是它知识邻域的广度肯定是你远不可及的。某个人可能在某个领域做到了90分,但ChatGPT可以在j大多数领域做到60分,甚至更高,而我们单个人可能只能在大多数领域只能做到10分 20分,所以ChatGPT是可以在你不熟悉的领域来帮助你学习的。

  举个很简单的例子,我是一个后端工程师,我可能java水平能到90分,但我对前端代码不了解,但我也能看懂,大概水平就是十几二十分。但在ChatGPT的辅助下,我用Electron写出了一个ChatGPT的桌面客户端。 这样的例子真的数不胜数,只要你愿意学,ChatGPT什么都可以教你。

在这里插入图片描述

备注:由于ChatGPT训练数据的时效性问题,它无法提供非常新的资料,甚至有些时候还会出现瞎编的情况,注意甄别。

总结

  还记得在ChatGPT刚爆火的那段时间,某大佬放出豪言说ChatGPT在x年内会替代xx%的程序员,最近类似的言论少了很多,我个人感觉不会有那么夸张,但肯定会替代掉一部分的,尤其是哪些低技术水平(比如简单的CURD)。不过我们只要学会使用好ChatGPT这个工具,我们一定不会被它替代。 最后附上前一段时间凯文凯利在接受csdn专访时说的一句话 AI 会取代人的 90% 技能,并放大剩余的 10%


http://www.ppmy.cn/news/100020.html

相关文章

C++程序员换工作之后需要注意的事情,我来分享给大家

今年,我换了工作,经历了在西安找工作的过程。我想和那些有兴趣的人分享我的经验。我知道每个城市的就业市场都有自己的特点,所以我的经验可能不适用于其他城市。尽管如此,我希望分享我的经验能够帮助那些正在寻找程序员工作的人。…

【华为OD统一考试B卷 | 100分】敏感字段加密(C++ Java JavaScript Python)

题目描述 给定一个由多个命令字组成的命令字符串: 1、字符串长度小于等于127字节,只包含大小写字母,数字,下划线和偶数个双引号; 2、命令字之间以一个或多个下划线_进行分割; 3、可以通过两个双引号””来标识包含下划线_的命令字或空命令字(仅包含两个双引号的命令字)…

PyQt实现视频抽帧显示

文章目录 概要整体架构流程技术名词解释视频抽帧视频帧--帧的类型名词解释技术细节小结概要 PyQt实现视频抽帧显示 整体架构流程 导入必要的库。import cv2 from PyQt5.QtGui import QImage, QPixmap from PyQt5.QtCore import Qt, QTimer创建一个QTimer对象,用于循环读取视…

[CISCN2023]unzip

[CISCN2023]unzip 环境搭建 1.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body><form method"post" action"1.php" en…

基于vb+ACCESS的身份证管理系统的设计与实现

【摘 要】 身份证管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。 经过分析,我们使用 MICROSOFT公司的…

C++实现哈希表

文章目录 前言1.哈希表的相关介绍2.哈希表的实现1.开放定址法实现哈希表1.插入2.查找3.删除 2.链地址法(开链法)实现哈希表1.插入节点2.查找3.删除4.相关的一些补充 3.封装unordered_map与unordered_set1.封装前的改造2.迭代器的实现3.unordered_map和unordered_set复用 前言 …

傅里叶级数和傅里叶变换之间的关系推理及应用

傅里叶级数和傅立叶变换是傅里叶分析的两个主要工具&#xff0c;它们之间有密切的关系。 什么是傅里叶级数 傅里叶级数是将一个周期函数分解为一系列正弦和余弦函数的和。它适用于周期性信号&#xff0c;可以将周期函数表示为一组振幅和相位不同的谐波分量的和。傅里叶级数展…

Java 基础进阶篇(十六):多线程总结

文章目录 一、多线程概述二、多线程的创建1.1 方式一&#xff1a;继承 Thread 类1.2 方式二&#xff1a;实现 Runnable 接口匿名内部类实现方案 1.3 方式三&#xff1a;JDK 5.0新增: 实现 Callable 接口1.4 三种方式对比 二、Thread的常用方法三、线程安全与同步3.1 线程安全3.…