解放大脑:ChatGPT + PlantUML = 不用画图了

Java后端技术

共 2939字,需浏览 6分钟

 ·

2024-06-05 09:19

往期热门文章:


    

1、高逼格的SQL写法:行行比较

2、限流算法哪家强?时间窗口,令牌桶与漏桶算法对比

3、每天都提交代码,那你知道.git目录内部的秘密吗?

4、我患上了空指针后遗症

5、这10个小技巧让你减少80%的Bug!

对于程序员来说,写文档这件事是绝大多数程序员不喜欢甚至非常讨厌的一件事儿,枯燥、乏味。我本身其实并不太排斥写文档、画图这些,当然了,比起写代码来说,我还是更喜欢写代码的。

但是写文档和补文档是两码事,有类似经历的同学应该能够理解,懂的都懂。项目开始前写文档还好,比如写登录功能、画登录流程图,这其实是一个设计的过程,写好文档后可以直接作为开发指导,还是很有价值的。而项目完成后补文档,感觉就是在浪费生命。

刚写的时候还行,一边写一边画图,还有精力注意图的美感,写了两天就彻底放飞了,美感不美感的放一边,关键是已经不想画了。

于是我找到了这个方法,用 ChatGPT 直接生成 PlantUML,微调一下就可以了,甚至有的调都不调,直接用了。

什么是 PlantUML

PlantUML是一个通用性很强的工具,可以快速、直接地创建各种图表。利用简单直观的语言,用户可以毫不费力地绘制各种类型的图表。支持序列图、用例图、类图、对象图、活动图、组件图、部署图、状态图、时序图。

「毫不费力」这个特点非常有吸引力,当然没那么夸张,还是要费点力气的。它有自己的一套语法,类似于写代码的方式表示各个实体之间的关系、指示要生成哪种类型的图。用过 Markdown 的一下就能理解。

举个例子,下面的代码可以表示 Client 向 Server 发送 Hello。

@startuml
!theme materia-outline
Client -> Server : Hello
@enduml


如果你想自己用它的语法规则,通过写代码的方式画图,可以到官网 https://plantuml.com/zh/ 上学习一下语法。

可以直接在 PlantUML 在线环境上运行

https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000

上方写代码,下面就直接生成对应的 UML 图了,可以调整样式,可以下载各种格式的图片。

也可以在本地安装运行,支持 Java 包运行,也支持 Docker 。

另外,像 VSCode 这些编辑器或者一些笔记软件都有对应的插件支持,可以搜索安装。

ChatGPT + PlantUML

如果你还是觉得不够「毫不费力」,那可以让 ChatGPT 直接生成给你。

打开 ChatGPT ,在「探索 GPT」里面可以搜索 “PlantUML Diagram Wizard”,这个应用是专门用来帮你画 PlantUML 的,但是使用的话需要 GPT-4o,如果超过最大限制,则需要开通 plus 才能用,有实力的同学可以用这个。

不用它也完全可以,我就直接用的免费版 ChatGPT-3.5,效果也没有问题。除此之外,用 Kimi 等大模型应该也问题不大。

那应该怎么给 ChatGPT 提示词呢?

  1. 首先你必须知道你要画的是什么类型的图,序列图、用例图、类图、对象图、活动图、组件图、部署图、状态图、时序图,类型关键词必须准确给到 GPT。
  2. 描述要清晰,这是必须的,就像你解释给别人一样,只不过 GPT 的理解能力更强一些。
  3. 如果有代码的话,必要情况下给一些解释。

下面我举几个例子,不一定是最好的,但是基本上能解决问题。

画类图

有时候 IDEA 能解决一部分问题,比如我查看一个 serverImpl的类图,但是更大范围的关系就不行了,比如我还想看到 Controller 调用 Service 的关系。

用 ChatGPT 怎么做呢?

第一步就是将代码给到 ChatGPT。这一步要看你的代码量有多少,如果代码量不多的话,可以一次性都给它,如果多的话,ChatGPT 的输入token 是有限制的,就要分批次告诉它。

第一步 prompt:接下来我会发给你几个 java 文件,在我告诉你开始画图之前,你只需要记住文件的内容就好了。之后GPT会表示明白了,请你发送文件内容。

第二步:将你要画的文件一个个的输送给 GPT。

第三步:好了,请帮我生成 PlantUML 格式的类图,请开始画图吧

然后 GPT 就会输出一个 PlantUML 代码段。

之后粘贴到 https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000  在线环境中,然后选一个主题,就可以把图弄下来了。

时序图

接下来我将一个登录流程的描述告诉 GPT 让它画出时序图。

prompt 如下:

以客户端、登录服务、数据库为3个主体,画出整个登录过程的Sequence diagrams:客户端输入手机号,调用登录服务,查询数据库,查看手机号是否存在,如果不存在,直接通知客户端用户不存,如果存在,登录服务查询数据库验证手机号和密码是否匹配,如果匹配,返回用户信息,客户端跳转到首页

其实描述的并不是那么条理很清晰,但是 GPT 比较聪明,它能理解。

最后还是粘贴到在线环境上,查看并下载最终的UML图。

怎么样,是不是能够偷下懒了。

   
往期热门文章:

1、升级 JDK17 一个不可拒绝的理由
2、SQL中为什么不要使用1=1?
3、同事使用 insert into select 迁移数据,开开心心上线,导致公司损失近10w!
4、拒绝写重复代码,试试这套开源的SpringBoot组件,效率翻倍~
5、我原以为是个笑话,没想到深挖一下背后还有故事。错怪官方了...
6、Lombok!代码“亚健康”元凶?

7上班摸鱼神器!标星 17k 的安卓手机投屏工具!
8、Zed,有望打败 VS Code 吗?
9、标星 43.1 K!最火跨平台笔记开源项目
10、融入团队代码风格,代码越写越烂!

浏览 319
1点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
1点赞
评论
收藏
分享

手机扫一扫分享

分享
举报