<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          解放大腦:ChatGPT + PlantUML = 不用畫(huà)圖了

          共 2939字,需瀏覽 6分鐘

           ·

          2024-06-05 09:19

          往期熱門(mén)文章:

          
              

          1、高逼格的SQL寫(xiě)法:行行比較

          2、限流算法哪家強(qiáng)?時(shí)間窗口,令牌桶與漏桶算法對(duì)比

          3、每天都提交代碼,那你知道.git目錄內(nèi)部的秘密嗎?

          4、我患上了空指針后遺癥

          5、這10個(gè)小技巧讓你減少80%的Bug!

          對(duì)于程序員來(lái)說(shuō),寫(xiě)文檔這件事是絕大多數(shù)程序員不喜歡甚至非常討厭的一件事兒,枯燥、乏味。我本身其實(shí)并不太排斥寫(xiě)文檔、畫(huà)圖這些,當(dāng)然了,比起寫(xiě)代碼來(lái)說(shuō),我還是更喜歡寫(xiě)代碼的。

          但是寫(xiě)文檔和補(bǔ)文檔是兩碼事,有類似經(jīng)歷的同學(xué)應(yīng)該能夠理解,懂的都懂。項(xiàng)目開(kāi)始前寫(xiě)文檔還好,比如寫(xiě)登錄功能、畫(huà)登錄流程圖,這其實(shí)是一個(gè)設(shè)計(jì)的過(guò)程,寫(xiě)好文檔后可以直接作為開(kāi)發(fā)指導(dǎo),還是很有價(jià)值的。而項(xiàng)目完成后補(bǔ)文檔,感覺(jué)就是在浪費(fèi)生命。

          剛寫(xiě)的時(shí)候還行,一邊寫(xiě)一邊畫(huà)圖,還有精力注意圖的美感,寫(xiě)了兩天就徹底放飛了,美感不美感的放一邊,關(guān)鍵是已經(jīng)不想畫(huà)了。

          于是我找到了這個(gè)方法,用 ChatGPT 直接生成 PlantUML,微調(diào)一下就可以了,甚至有的調(diào)都不調(diào),直接用了。

          什么是 PlantUML

          PlantUML是一個(gè)通用性很強(qiáng)的工具,可以快速、直接地創(chuàng)建各種圖表。利用簡(jiǎn)單直觀的語(yǔ)言,用戶可以毫不費(fèi)力地繪制各種類型的圖表。支持序列圖、用例圖、類圖、對(duì)象圖、活動(dòng)圖、組件圖、部署圖、狀態(tài)圖、時(shí)序圖。

          「毫不費(fèi)力」這個(gè)特點(diǎn)非常有吸引力,當(dāng)然沒(méi)那么夸張,還是要費(fèi)點(diǎn)力氣的。它有自己的一套語(yǔ)法,類似于寫(xiě)代碼的方式表示各個(gè)實(shí)體之間的關(guān)系、指示要生成哪種類型的圖。用過(guò) Markdown 的一下就能理解。

          舉個(gè)例子,下面的代碼可以表示 Client 向 Server 發(fā)送 Hello。

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


          如果你想自己用它的語(yǔ)法規(guī)則,通過(guò)寫(xiě)代碼的方式畫(huà)圖,可以到官網(wǎng) https://plantuml.com/zh/ 上學(xué)習(xí)一下語(yǔ)法。

          可以直接在 PlantUML 在線環(huán)境上運(yùn)行

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

          上方寫(xiě)代碼,下面就直接生成對(duì)應(yīng)的 UML 圖了,可以調(diào)整樣式,可以下載各種格式的圖片。

          也可以在本地安裝運(yùn)行,支持 Java 包運(yùn)行,也支持 Docker 。

          另外,像 VSCode 這些編輯器或者一些筆記軟件都有對(duì)應(yīng)的插件支持,可以搜索安裝。

          ChatGPT + PlantUML

          如果你還是覺(jué)得不夠「毫不費(fèi)力」,那可以讓 ChatGPT 直接生成給你。

          打開(kāi) ChatGPT ,在「探索 GPT」里面可以搜索 “PlantUML Diagram Wizard”,這個(gè)應(yīng)用是專門(mén)用來(lái)幫你畫(huà) PlantUML 的,但是使用的話需要 GPT-4o,如果超過(guò)最大限制,則需要開(kāi)通 plus 才能用,有實(shí)力的同學(xué)可以用這個(gè)。

          不用它也完全可以,我就直接用的免費(fèi)版 ChatGPT-3.5,效果也沒(méi)有問(wèn)題。除此之外,用 Kimi 等大模型應(yīng)該也問(wèn)題不大。

          那應(yīng)該怎么給 ChatGPT 提示詞呢?

          1. 首先你必須知道你要畫(huà)的是什么類型的圖,序列圖、用例圖、類圖、對(duì)象圖、活動(dòng)圖、組件圖、部署圖、狀態(tài)圖、時(shí)序圖,類型關(guān)鍵詞必須準(zhǔn)確給到 GPT。
          2. 描述要清晰,這是必須的,就像你解釋給別人一樣,只不過(guò) GPT 的理解能力更強(qiáng)一些。
          3. 如果有代碼的話,必要情況下給一些解釋。

          下面我舉幾個(gè)例子,不一定是最好的,但是基本上能解決問(wèn)題。

          畫(huà)類圖

          有時(shí)候 IDEA 能解決一部分問(wèn)題,比如我查看一個(gè) serverImpl的類圖,但是更大范圍的關(guān)系就不行了,比如我還想看到 Controller 調(diào)用 Service 的關(guān)系。

          用 ChatGPT 怎么做呢?

          第一步就是將代碼給到 ChatGPT。這一步要看你的代碼量有多少,如果代碼量不多的話,可以一次性都給它,如果多的話,ChatGPT 的輸入token 是有限制的,就要分批次告訴它。

          第一步 prompt:接下來(lái)我會(huì)發(fā)給你幾個(gè) java 文件,在我告訴你開(kāi)始畫(huà)圖之前,你只需要記住文件的內(nèi)容就好了。之后GPT會(huì)表示明白了,請(qǐng)你發(fā)送文件內(nèi)容。

          第二步:將你要畫(huà)的文件一個(gè)個(gè)的輸送給 GPT。

          第三步:好了,請(qǐng)幫我生成 PlantUML 格式的類圖,請(qǐng)開(kāi)始畫(huà)圖吧。

          然后 GPT 就會(huì)輸出一個(gè) PlantUML 代碼段。

          之后粘貼到 https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000  在線環(huán)境中,然后選一個(gè)主題,就可以把圖弄下來(lái)了。

          時(shí)序圖

          接下來(lái)我將一個(gè)登錄流程的描述告訴 GPT 讓它畫(huà)出時(shí)序圖。

          prompt 如下:

          以客戶端、登錄服務(wù)、數(shù)據(jù)庫(kù)為3個(gè)主體,畫(huà)出整個(gè)登錄過(guò)程的Sequence diagrams:客戶端輸入手機(jī)號(hào),調(diào)用登錄服務(wù),查詢數(shù)據(jù)庫(kù),查看手機(jī)號(hào)是否存在,如果不存在,直接通知客戶端用戶不存,如果存在,登錄服務(wù)查詢數(shù)據(jù)庫(kù)驗(yàn)證手機(jī)號(hào)和密碼是否匹配,如果匹配,返回用戶信息,客戶端跳轉(zhuǎn)到首頁(yè)

          其實(shí)描述的并不是那么條理很清晰,但是 GPT 比較聰明,它能理解。

          最后還是粘貼到在線環(huán)境上,查看并下載最終的UML圖。

          怎么樣,是不是能夠偷下懶了。

             
          往期熱門(mén)文章:

          1、升級(jí) JDK17 一個(gè)不可拒絕的理由
          2、SQL中為什么不要使用1=1?
          3、同事使用 insert into select 遷移數(shù)據(jù),開(kāi)開(kāi)心心上線,導(dǎo)致公司損失近10w!
          4、拒絕寫(xiě)重復(fù)代碼,試試這套開(kāi)源的SpringBoot組件,效率翻倍~
          5、我原以為是個(gè)笑話,沒(méi)想到深挖一下背后還有故事。錯(cuò)怪官方了...
          6、Lombok!代碼“亞健康”元兇?

          7、上班摸魚(yú)神器!標(biāo)星 17k 的安卓手機(jī)投屏工具!
          8、Zed,有望打敗 VS Code 嗎?
          9、標(biāo)星 43.1 K!最火跨平臺(tái)筆記開(kāi)源項(xiàng)目
          10、融入團(tuán)隊(duì)代碼風(fēng)格,代碼越寫(xiě)越爛!

          瀏覽 358
          1點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          1點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  九九无码电影 | 婷婷五月天在线播放 | 国产91黄片 | 欧美色图第一页 | 最新国产免费黄色 |