0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何借助GPT-4評(píng)審、重構(gòu)代碼?

vliwulianw ? 來(lái)源:軟件質(zhì)量報(bào)道 ? 2023-03-31 09:27 ? 次閱讀

我們將演示使用ChatGPT或GPT-4來(lái)檢查和重構(gòu)代碼的技術(shù),以及討論一些限制,并為在編程工作流中使用這些LLM提供方便的資源。

我們將從檢查和重構(gòu)的方法開始,對(duì)于每種方法,我們希望嘗試不同的提示和所提供的技術(shù),以釋放AI驅(qū)動(dòng)的代碼改進(jìn)的全部潛力。

用GPT-4重構(gòu)代碼

重構(gòu)代碼之所以重要,有以下幾個(gè)原因:它增強(qiáng)了可讀性和可維護(hù)性,使開發(fā)人員更容易理解和修改代碼。它還有助于防止?jié)撛诘腻e(cuò)誤,并確保您的代碼遵循已建立的最佳實(shí)踐。最終,重構(gòu)可以產(chǎn)生更高效、更可靠、更健壯的軟件。

GPT-4可以顯著促進(jìn)這一過(guò)程。通過(guò)使用GPT-4檢查和評(píng)估代碼,您可以快速識(shí)別需要改進(jìn)的地方,并創(chuàng)建更清晰、更高效的代碼。利用GPT-4的功能可以節(jié)省時(shí)間并減少過(guò)程中的人為錯(cuò)誤,從而更加一致地遵守編碼標(biāo)準(zhǔn)。

使舊代碼現(xiàn)代化

通過(guò)將舊函數(shù)提供給GPT-4,并要求它根據(jù)現(xiàn)代編碼實(shí)踐進(jìn)行重構(gòu),可以快速實(shí)現(xiàn)代碼的現(xiàn)代化,如根據(jù)現(xiàn)代ES6( ECMAScript 6.0)編程標(biāo)準(zhǔn)重構(gòu)以下代碼。

之前:

Before:

882a9ee4-cf56-11ed-bfe3-dac502259ad0.png

After:

884aa004-cf56-11ed-bfe3-dac502259ad0.png

在這個(gè)重構(gòu)版本中,GPT4迅速做出了以下改進(jìn):

增加了JSDoc注釋

將tempConvert函數(shù)轉(zhuǎn)換為箭頭函數(shù)。

對(duì)于不可變變量,將var替換為const。

對(duì)字符串比較使用嚴(yán)格的相等性檢查(===)。

引入一個(gè)常數(shù)來(lái)消除神奇的數(shù)字。

使用模板字面量簡(jiǎn)化return語(yǔ)句。

添加編碼最佳實(shí)踐或原則

我們公司或代碼庫(kù)可能會(huì)使用自己希望保留的某些編碼實(shí)踐和風(fēng)格。對(duì)于這種情況,請(qǐng)向GPT4提供希望它關(guān)注的特定編碼實(shí)踐或風(fēng)格的說(shuō)明。

Prompt:檢查以下代碼并對(duì)其進(jìn)行重構(gòu),使其更加DRY并采用SOLID編程原則。

注意,對(duì)于相同的輸入,它采用了SOLID編程原則中的單一責(zé)任(Single Responsibility)原則,將函數(shù)分為3個(gè)。與前面的“現(xiàn)代化”步驟不同,它沒(méi)有將函數(shù)轉(zhuǎn)換為箭頭(arrow)函數(shù)。

“通過(guò)將轉(zhuǎn)換邏輯提取到單獨(dú)的函數(shù)中,我們改進(jìn)了代碼對(duì)單一責(zé)任原則(SOLID的一部分)的遵守,因?yàn)楝F(xiàn)在每個(gè)函數(shù)都有一個(gè)明確的、集中的目的?!?/p>

886c05f0-cf56-11ed-bfe3-dac502259ad0.png

檢測(cè)和修復(fù)錯(cuò)誤

有時(shí)我們對(duì)代碼可能產(chǎn)生的漏洞或潛在問(wèn)題視而不見。讓GPT-4檢查和解決代碼問(wèn)題可以節(jié)省的不僅僅是時(shí)間。

Prompt:檢查這段代碼的錯(cuò)誤并重構(gòu)以修復(fù)任何問(wèn)題…

故意輸入(有缺陷)的程序:

888b5d06-cf56-11ed-bfe3-dac502259ad0.png

輸出:

88a1be52-cf56-11ed-bfe3-dac502259ad0.png

GPT-4所做的更改:

增加了輸入參數(shù)驗(yàn)證,以確保items是一個(gè)數(shù)組,折扣百分比是一個(gè)數(shù)字。

檢查折扣百分比的邊界條件,以確保它在0-100范圍內(nèi)。

增加了項(xiàng)目屬性及其類型的驗(yàn)證,以確保價(jià)格和數(shù)量為數(shù)字。

創(chuàng)建樣板代碼(*我的最愛(ài))

開始新項(xiàng)目可能會(huì)很痛苦。GPT-4不知道業(yè)務(wù)邏輯,但它可以用于第一天要寫的、枯燥的樣板代碼。從技術(shù)上講,這不是重構(gòu),但它很神奇,可以成為編程生命周期中某個(gè)過(guò)程的一部分。

Prompt:為我寫一個(gè)樣板Node.js函數(shù),它將接受一個(gè)User類型的變量,驗(yàn)證用戶具有正確的權(quán)限,從postgres數(shù)據(jù)庫(kù)中獲取一個(gè)項(xiàng)目類型Posts的數(shù)組并返回它們。為業(yè)務(wù)邏輯留下注釋。

代碼轉(zhuǎn)換(遷移)

需要將代碼從一種語(yǔ)言轉(zhuǎn)換為另一種語(yǔ)言的原因有很多。我們發(fā)現(xiàn)一種語(yǔ)言的代碼庫(kù)需要替換為另一種語(yǔ)言的代碼,我們需要進(jìn)行代碼的移植;或者老板讀了一篇關(guān)于最新前端框架的文章,要求我們把老程序移植到 {拆分的新代碼庫(kù)}。 在任何情況下,GPT-4都可以通過(guò)簡(jiǎn)單的提示符提供幫助。

Prompt:在Rust中重寫以下代碼:…

向代碼中添加注釋

如果代碼是自解釋的,但需要注釋,這可以節(jié)省大量時(shí)間。

Prompt:向以下代碼添加注釋…

更好的重構(gòu)技巧

像生活中的許多事情一樣,使用GPT-4,我們投入越多,得到的回報(bào)就越多。在這種情況下,提供更多的背景、說(shuō)明和指導(dǎo)通常會(huì)產(chǎn)生更好的結(jié)果。

以下是改進(jìn)代碼重構(gòu)的技巧和技巧:

拆分提示: 嘗試將提示和預(yù)期結(jié)果拆分為多個(gè)步驟。保持提示有一個(gè)單一的結(jié)果已經(jīng)被證明比組合提示產(chǎn)生更好的結(jié)果。例如,要求評(píng)審,然后要求基于評(píng)審響應(yīng)的重構(gòu)。隨著llm增加他們的令牌限制,這可能會(huì)變得不那么重要。

舉例: 提供預(yù)期的輸入、數(shù)據(jù)和輸出,以提高準(zhǔn)確性和質(zhì)量。

具體一點(diǎn): 不要害怕列出你想要的,你知道的,需要的,不應(yīng)該包括的。

要求它反射: 一種叫做反射的技術(shù)已經(jīng)被證明可以提高GPT4的準(zhǔn)確性?;旧暇褪菃?wèn)它‘你為什么錯(cuò)了?’或者讓它反思和檢討自己的反應(yīng)。

限制

這篇文章中,我們已經(jīng)見識(shí)了很強(qiáng)的AI,但是這些模型并不完美,(目前)還不能準(zhǔn)確地復(fù)制業(yè)務(wù)邏輯。下面是使用GPT-4檢查或重構(gòu)代碼時(shí)需要注意和避免的事情:

它可能是(自信地)錯(cuò)誤的: GPT4被訓(xùn)練得聽起來(lái)令人信服,但這并不意味著它總是正確的。另一篇關(guān)于用ChatGPT重構(gòu)Golang的很棒的文章報(bào)道了“它擺脫了類型檢查,并自信地解釋說(shuō),將非int值斷言為int類型將返回int類型的零值,但這是不正確的,會(huì)引起恐慌”。

從長(zhǎng)遠(yuǎn)來(lái)看,節(jié)省時(shí)間可能并不值得: 當(dāng)然,GPT4可以在一分鐘內(nèi)生成50行代碼,但如果它不適合我們的代碼庫(kù),則可能需要花費(fèi)45分鐘來(lái)調(diào)試和調(diào)整它,這樣還不如自己寫。

它可能會(huì)過(guò)時(shí): 科技世界發(fā)展很快?!癎PT-4通常缺乏對(duì)其絕大部分?jǐn)?shù)據(jù)被切斷后(2021年9月)發(fā)生的事件的了解?!?您可能會(huì)遇到任何新更新的庫(kù)、框架或技術(shù)的問(wèn)題。

結(jié)論

人工智能驅(qū)動(dòng)的編程只是一種新事物,但它會(huì)一直存在下去。如果使用得當(dāng),它可以節(jié)省時(shí)間,并幫助我們編寫更好的代碼。我希望您喜歡本文,并掌握了一些提高編程效率或錯(cuò)誤處理的新技能。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 人工智能
    +關(guān)注

    關(guān)注

    1791

    文章

    46671

    瀏覽量

    237114
  • GPT
    GPT
    +關(guān)注

    關(guān)注

    0

    文章

    351

    瀏覽量

    15285

原文標(biāo)題:如何借助GPT-4評(píng)審、重構(gòu)代碼?

文章出處:【微信號(hào):軟件質(zhì)量報(bào)道,微信公眾號(hào):軟件質(zhì)量報(bào)道】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    GPT-4發(fā)布!多領(lǐng)域超越“人類水平”,專家:國(guó)內(nèi)落后2-3年

    電子發(fā)燒友網(wǎng)報(bào)道(文/吳子鵬)北京時(shí)間3月15日凌晨,人工智能研究公司OpenAI正式發(fā)布了其下一代大型語(yǔ)言模型GPT-4。目前,ChatGPT的Plus訂閱用戶已經(jīng)可以使用GPT-4,其他用戶需要
    的頭像 發(fā)表于 03-16 01:58 ?4639次閱讀
    <b class='flag-5'>GPT-4</b>發(fā)布!多領(lǐng)域超越“人類水平”,專家:國(guó)內(nèi)落后2-3年

    ChatGPT升級(jí) OpenAI史上最強(qiáng)大模型GPT-4發(fā)布

    ChatGPT升級(jí) 史上最強(qiáng)大模型GPT-4發(fā)布 OpenAI正式推出了ChatGPT升級(jí)版本,號(hào)稱史上最強(qiáng)大模型GPT-4發(fā)布。OpenAI期待GPT-4成為一個(gè)更有價(jià)值的AI工具。 GPT
    的頭像 發(fā)表于 03-15 18:15 ?2753次閱讀

    關(guān)于GPT-4的產(chǎn)品化狂想

    GPT-4是條件,而不是結(jié)果
    的頭像 發(fā)表于 03-26 10:48 ?2929次閱讀
    關(guān)于<b class='flag-5'>GPT-4</b>的產(chǎn)品化狂想

    GPT-4是這樣搞電機(jī)的

    GPT-4寫電機(jī)基礎(chǔ)程序沒(méi)問(wèn)題
    的頭像 發(fā)表于 04-17 09:41 ?941次閱讀
    <b class='flag-5'>GPT-4</b>是這樣搞電機(jī)的

    一個(gè)基于GPT-4代碼搜索引擎,開源了!

    于是,一個(gè)名為 Bloop 的代碼搜索引擎應(yīng)運(yùn)而生,它的存在,徹底打破了以往傳統(tǒng)的代碼搜索方式,采用基于 GPT-4 的 AI 智能模型,成功實(shí)現(xiàn)用自然語(yǔ)言,語(yǔ)義化的代碼搜索方式!
    的頭像 發(fā)表于 04-27 14:25 ?1325次閱讀
    一個(gè)基于<b class='flag-5'>GPT-4</b>的<b class='flag-5'>代碼</b>搜索引擎,開源了!

    GPT-4 的模型結(jié)構(gòu)和訓(xùn)練方法

    GPT-4 的發(fā)布報(bào)道上,GPT-4 的多模態(tài)能力讓人印象深刻,它可以理解圖片內(nèi)容給出圖片描述,甚至能在圖片內(nèi)容的基礎(chǔ)上理解其中的隱喻或推斷下一時(shí)刻的發(fā)展。
    的頭像 發(fā)表于 05-22 15:21 ?2577次閱讀
    <b class='flag-5'>GPT-4</b> 的模型結(jié)構(gòu)和訓(xùn)練方法

    微軟提出Control-GPT:用GPT-4實(shí)現(xiàn)可控文本到圖像生成!

    該研究提出了一個(gè)簡(jiǎn)單而有效的框架 Control-GPT,它利用 LLM 的強(qiáng)大功能根據(jù)文本 prompt 生成草圖。Control-GPT 的工作原理是首先使用 GPT-4 生成 TikZ
    的頭像 發(fā)表于 06-05 15:31 ?801次閱讀
    微軟提出Control-<b class='flag-5'>GPT</b>:用<b class='flag-5'>GPT-4</b>實(shí)現(xiàn)可控文本到圖像生成!

    GPT-4處于一個(gè)什么樣的編碼地位

    ? 面試環(huán)節(jié)第一步——回答問(wèn)題,寫軟件需求 面試環(huán)節(jié)第二步——上手寫代碼 測(cè)試用例 ? 比 ChatGPT 背后 GPT-3.5 更為強(qiáng)大的模型 GPT-4,已正式對(duì)外發(fā)布。在 OpenAI 官方
    的頭像 發(fā)表于 06-16 10:42 ?746次閱讀
    <b class='flag-5'>GPT-4</b>處于一個(gè)什么樣的編碼地位

    GPT-4 Copilot X震撼來(lái)襲!AI寫代碼效率10倍提升,碼農(nóng)遭降維打擊

    來(lái)源:新智元【導(dǎo)讀】GPT-4加強(qiáng)版Copilot來(lái)了!剛剛,GitHub發(fā)布了新一代代碼生成工具GitHubCopilotX,動(dòng)嘴寫代碼不再是夢(mèng)。微軟真的殺瘋了!上周,微軟剛用GPT-4
    的頭像 發(fā)表于 04-04 16:35 ?845次閱讀
    <b class='flag-5'>GPT-4</b> Copilot X震撼來(lái)襲!AI寫<b class='flag-5'>代碼</b>效率10倍提升,碼農(nóng)遭降維打擊

    人工通用智能的火花:GPT-4的早期實(shí)驗(yàn)

    人工智能(AI)研究人員一直在開發(fā)和完善大型語(yǔ)言模型(LLMs),這些模型在各種領(lǐng)域和任務(wù)中表現(xiàn) 出非凡的能力,挑戰(zhàn)我們對(duì)學(xué)習(xí)和認(rèn)知的理解。由OpenAI開發(fā)的最新模型GPT-4[Ope23
    發(fā)表于 06-20 15:49 ?1次下載

    GPT-4已經(jīng)會(huì)自己設(shè)計(jì)芯片了嗎?

    ? GPT-4已經(jīng)會(huì)自己設(shè)計(jì)芯片了!芯片設(shè)計(jì)行業(yè)的一個(gè)老大難問(wèn)題HDL,已經(jīng)被GPT-4順利解決。并且,它設(shè)計(jì)的130nm芯片,已經(jīng)成功流片。 GPT-4,已經(jīng)可以幫人類造芯片了! 只用簡(jiǎn)單的英語(yǔ)
    的頭像 發(fā)表于 06-20 11:51 ?926次閱讀
    <b class='flag-5'>GPT-4</b>已經(jīng)會(huì)自己設(shè)計(jì)芯片了嗎?

    OpenAI宣布GPT-4 API全面開放使用!

    OpenAI 在博客文章中寫道:“自 3 月份以來(lái),數(shù)百萬(wàn)開發(fā)者請(qǐng)求訪問(wèn) GPT-4 API,并且利用 GPT-4 的創(chuàng)新產(chǎn)品范圍每天都在增長(zhǎng)?!?“我們?cè)O(shè)想基于對(duì)話的模型未來(lái)可以支持任何用例?!?/div>
    的頭像 發(fā)表于 07-12 14:55 ?1229次閱讀

    gpt-4怎么用 英特爾Gaudi2加速卡GPT-4詳細(xì)參數(shù)

    介紹GPT-4 詳細(xì)參數(shù)及英特爾發(fā)布 Gaudi2 加速器相關(guān)內(nèi)容,對(duì)大模型及 GPU 生態(tài)進(jìn)行探討和展望。英特爾發(fā)布高性價(jià)比Gaudi2加速卡GPT4詳細(xì)參數(shù)分析。
    發(fā)表于 07-21 10:50 ?832次閱讀
    <b class='flag-5'>gpt-4</b>怎么用 英特爾Gaudi2加速卡<b class='flag-5'>GPT-4</b>詳細(xì)參數(shù)

    GPT-4沒(méi)有推理能力嗎?

    今年三月,OpenAI 重磅發(fā)布了 GPT-4 大模型,帶來(lái)了比 ChatGPT 背后 GPT-3.5 更強(qiáng)的推理、計(jì)算、邏輯能力,也引發(fā)了全民使用的熱潮。在各行各領(lǐng)域研究人員、開發(fā)者、設(shè)計(jì)師的使用過(guò)程中,「GPT-4 是最為領(lǐng)
    的頭像 發(fā)表于 08-11 14:20 ?864次閱讀
    <b class='flag-5'>GPT-4</b>沒(méi)有推理能力嗎?

    ChatGPT plus有什么功能?OpenAI 發(fā)布 GPT-4 Turbo 目前我們所知道的功能

    OpenAI 發(fā)布 GPT-4 Turbo 目前我們所知道的功能分析解答 在最近的OpenAI DevDay上,該組織發(fā)布了一項(xiàng)備受期待的公告:推出GPT-4 Turbo,這是對(duì)其突破性AI模型
    的頭像 發(fā)表于 12-13 09:19 ?1047次閱讀
    ChatGPT plus有什么功能?OpenAI 發(fā)布 <b class='flag-5'>GPT-4</b> Turbo 目前我們所知道的功能