作者:京东零售 王英杰
该文档记录云交易开发小伙伴儿们在开发过程中的实际应用案例,记录典型案例,以解决开发过程中的实际问题为主,涵盖设计方案、编码、测试、集成、部署等等。
目的:贡献最佳实践,分享心得,共同成长!
一般情况下,Prompt 可以分成以下 4 个部分:
举例:
Instruction: 向我说明前端所需技术栈 Context: 假设你是一个前端面试官,我是一个本科毕业的应届生 InputData: 向我说明现阶段前端行业要求应届生掌握的技能情况 Output Indicator: 用尽量简单易懂的语言
举例:
✅有效 Prompt 总结一下《鲁滨逊漂流记》所讲内容? # 聚焦、相关 北京最地道的本土餐厅有哪些? # 具体、相关
❌无效 Prompt 告诉我关于这个世界为什么存在? # 宽泛、开放 可以帮我完成工作吗? # 开放 你好 # 无目的、不聚焦
(1)提供代码片段,并提出自己的诉求级具体优化方向
(2)进一步提出具体的优化方向
(3)获得优化后的代码根据业务场景进行加工,测试
1)帮忙检查下 sql 有没有问题,这个是要将业务表新增几个字段
它帮忙给识别到一些问题
按照它提示的问题修改;
我让它将三条 sql 合并到一条,要不然 jed 会提示让合并,所以让 GPT 帮忙合并。
还是很智能的,jed 的 sql 检查也都顺利通过了,能帮我们 review sql 的正确性,降低错误操作的风险。
你是一个程序员,帮忙编写一段程序,要求输入一串字符串,中间 “,” 分隔,最多有 50 个片段,然后需要校验这些片段是否有重复的,重复的放在 set 里面返回;
GPT 给我生成的是 python 代码;
重新提问:你是一个 Java 程序员,帮忙编写一段程序,要求输入一串字符串,中间 “,” 分隔,最多有 50 个片段,然后需要校验这些片段是否有重复的,重复的放在 set 里面返回
再次进行优化:将 50 作为一个变量,不要写死,重新生成一个方法;
总结: 在项目中有需要校验一个字符串 50 个渠道,逗号分割,判断渠道是否重复的需求,所以通过一步步提问,让GPT 帮忙生成一个工具类,这样我们在项目中可以直接使用改工具类进行快速的验证。
背景:由于长时间使用京东 Jdos 部署代码,对于 Linux 的一些指令已经忘记。故使用 ChatGPT 指导我从零搭建 JAVA 部署环境。
1)下面我给 ChatGPT 的指令
指令 1:CentOS7 安装 JAVA 环境,然后通过 nohub 命令后台启动 java jar 包并把日志输出到 douyin.txt 文件中
ChatGPT 回答如下:
指令 2:到官网下载再安装 JDK 太麻烦了,帮我将上述安装 jdk 的步骤换成 yum 方式安装
ChatGPT 回答如下:
2)下面参考它给的指令安装 JDK8,然后检测 JDK 版本,成功安装了。
3)接下来我把 jar 包上传到一个指定的目录,创建目录命令我都忘了。。。问问 ChatGPT 吧。
4)把开发好的 jar 包上传到已经创建好的目录中
5)执行 nohup 命令
6)浏览器访问 swagger 成功了
6)使用感受,几分钟就解决了我的问题。避免了我一步步百度,去翻 CSDN 还容易找到错误的答案。极大地节省了我的时间。因为后续还有几台机器要部署,已经把命令和步骤整理成文档沉淀下来。
上次用 chatgpt 帮我查询 linux 搭建 java 环境,后台部署 jar 包的命令,这次 jar 包更新需要替换 jar 包。我又咨询了如何停止 jar 包所在的进程。
1)执行第一个命令, ps -ef | grep jar 命令查找所有正在运行的 jar 包进程
2)执行第二个命令,kill -9 PID,这里我的 jar 包的进程 PID 是 32723
3)重新部署 jar 包服务,这个命令之前已经问过 ChatGPT 并沉淀下来了,直接拷贝过来使用。
4)检查是否部署成功
今天思考 ChatGPT 如何提升研发效能这个问题。正当我为这个问题绞尽脑汁的时候。突然灵光一现,为什么不问 ChatGPT 帮我思考用 ChatGPT 如何提升研发效能这个问题呢?
就像武侠电视剧和电影中的那样,剧中武侠高手左脚踩右脚就能腾空而起一样。那我问 ChatGPT 如何用 ChatGPT 提升研发效能肯定也是可行的。理论是可行的,那么 OK 让我们开始实践。
首先我们给 ChatGPT 设置一个角色。在软件工程提效领域非常资深的大师有谁呢?我第一时间就想到了人月神话的作者——布鲁克斯 FrederickP.Brooks.Jr
1)下面我们给它一个指令:假如你是《人月神话》作者 FrederickP.Brooks.Jr.,你需要以它的思维和角度思考我想你提问的问题。如果你理解了,请回复好的。
我们可以看到它回复了好的。
2)接下来我们给它第二个指令:现在 ChatGPT 非常厉害,你认为如何用它来提升研发效能?
它以软件工程师的角度回答了 ChatGPT 技术可以从自动化测试、语言翻译、代码优化、自动文档化这几个角度来提升研发效能。
1 和 3 这两个已经想到了,2 目前不需要,第四个自动文档化确实没有想到。接下来我们继续结合第 4 条自动文档化继续深入追问。
3)接下来是第三个指令:针对第四条自动文档化,请你编写一个 Java 的查询学生姓名和年龄的 Controller 接口,然后为这个接口生成提供给前端的 API 文档。
下面它直接编写了一个 API 接口,并直接用 swagger 来生成 api 文档了。
swagger 接口
结果不是很理想,我们再问问它是否还有其他用 ChatGPT 提升研发效能的建议
4)接下来是第四个指令:请你以《人月神话》作者 FrederickP.Brooks.Jr.的角度提出 10 条用 ChatGPT 提升研发效能的建议。
最后它帮我们生成了 10 条建议
下面把建议附赠给大家:
1.通过提供自然语言处理的能力,Chat GPT 可以帮助团队成员更高效地进行沟通和协作,减少误解和沟通不畅的情况。
2.ChatGPT 可以被用来智能化项目管理。例如,在团队中使用 Chat GPT 聊天机器人来跟踪进度、分配任务和协调团队成员的工作。
3.通过了解开发者的意图和需求,Chat GPT 可以提供更加智能化和个性化的开发辅助工具,如代码提示、错误检查等。
4.ChatGPT 可以利用机器学习和数据挖掘技术,从已有的代码库中提取最佳实践、代码片段和模板,并向开发者推荐最佳实践和代码重用。
5.ChatGPT 可以作为一个知识库,帮助开发者更快地获取所需信息。例如,ChatGPT 可以回答关于某项技术或库的问题,或提供代码样例等。
6.在开发过程中,Chat GPT 可以自动进行代码评审和测试,及时提供反馈和纠正错误,帮助开发者更早地发现和解决问题。
7.ChatGPT 可以自动分析代码库中的重复代码、遗留代码和低效代码,提供优化建议,并减少代码维护负担。
8.ChatGPT 可以帮助开发者进行数据分析和可视化,提供交互式探索和信息呈现功能,从而更好地理解数据和模型。
9.通过使用 Chat GPT 生成自然语言描述的方式,可以将机器学习模型的结果更加易读易懂地呈现给非技术人员,并提高沟通效率。
10.最后,Chat GPT 可以被用来开发智能化的应用程序,如聊天机器人、智能客服等,从而更好地服务用户。
使用 mybatis 判断 String 字符串为空的条件表达式,我一开始写成 || 了。自己看了半天也没看出问题。询问 ChatGPT 一眼帮我找出来了。
idea 安装插件【NexChatGpt】
1、在实际的开发中,对代码里面相识的两个类,进行抽象重构。
可以直接生成两个类的抽象父类,可以供参考
目前这个插件,有时候会出现问题,还需要重启 idea。
有时候提示让贴上自己的代码。。。
免费提问 30 次。。。
还有些不稳定。。。
小试牛刀,成功搞定
使用随机算法获取一个 ip
以 ip 作为入参,成功搞定我的需求
太复杂了,尽然无法支持,就来一个简单的
再完善下,并帮忙写一个测试案例测试下看
亲自验证测试是否正确,能否跑起来
虽然能够跑起来,但是测试结果和其预期不一致,分析错误产生的原因是注解 inject 使用错误,正确使用时需要对注解添加元注解@Retention,其作用可以简单理解为设置注解的生命周期。
@Retention 注解传入的是 RetentionPolicy 枚举,该枚举有三个常量,分别是 SOURCE、CLASS 和 RUNTIME
三者区别如下:
SOURCE 代表着注解仅保留在源级别中,编译器将 Java 文件编译成 class 文件时将之遗弃。
CLASS 代表着注解被保留在 class 文件中,JVM 加载 class 文件时将之遗弃。
RUNTIME 代表着标记的注解会由 JVM 保留,因此运行时环境可以使用它。
总结:chat-gpt 对于技术细节可能无法把控,但是总体的程序框架及逻辑验证还是没有问题的。
(该案例可以用于任何思维导图的使用中,提高写思维导图的效率,提示: 思维支持 markdown 文件导入)
Martin Fowler 提出了一个经典的关于命名的语言:“一个好的命名就像是好的魔法,它可以让事情变得清晰易懂。” 这个语言表达了好的命名在代码中的重要性,良好的命名可以帮助读者更快地理解代码的意图和功能,提高代码的可读性和可维护性。同时,精确的命名也可以减少代码中的歧义和错误,使代码更加健壮。
以电商商品系统为例,给提供一个 DDD 项目模块命名样例
JOSN 串的格式化与压缩:
ChatGPT 生成代码注释,以提高代码的可读性和可维护性。
代码的可读性很重要,因为代码是由人编写和维护的。当代码可读性差时,它
将很难理解和修改,这将导致代码的可维护性和可扩展性受到影响。特别是大
家都是团队合作,如果代码的可读性很差,必然影响到团队里的其他人,也非
常不便于扩展。
ChatGPT 进行代码评审,以提高代码的质量和可靠性。
你还可以通过使用 ChatGPT 来进行代码评审。代码评审是指通过检查代码来发现和
修复错误、缺陷和不良实践的过程。ChatGPT 进行代码评审可以帮助开发人员发现
代码中的潜在问题,并提出改进建议,从而提高代码的可靠性。
ChatGPT 辅助进行代码逻辑重构
复杂代码可以按需进行重构,结合设计模式,可以给 ChatGPT 下达按设计模式重构代码的指令。
ChatGPT 辅助源代码阅读 ,以提高源码阅读功底。
ChatGPT 的命名能力真的是无可挑剔,自然语言的处理处理能力、理解能力太强大了!
作者:京东零售 王英杰
内容来源:京东云开发者社区