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

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

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

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

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

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

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

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

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

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

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

通過將舊函數(shù)提供給GPT-4,并要求它根據(jù)現(xiàn)代編碼實踐進行重構(gòu),可以快速實現(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òu)版本中,GPT4迅速做出了以下改進:

增加了JSDoc注釋

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

對于不可變變量,將var替換為const。

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

引入一個常數(shù)來消除神奇的數(shù)字。

使用模板字面量簡化return語句。

添加編碼最佳實踐或原則

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

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

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

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

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

檢測和修復(fù)錯誤

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

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

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

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

輸出:

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

GPT-4所做的更改:

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

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

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

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

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

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

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

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

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

向代碼中添加注釋

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

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

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

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

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

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

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

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

要求它反射: 一種叫做反射的技術(shù)已經(jīng)被證明可以提高GPT4的準(zhǔn)確性?;旧暇褪菃査銥槭裁村e了?’或者讓它反思和檢討自己的反應(yīng)。

限制

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

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

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

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

結(jié)論

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

審核編輯 :李倩

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

    關(guān)注

    1791

    文章

    47279

    瀏覽量

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

    關(guān)注

    0

    文章

    354

    瀏覽量

    15379

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

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

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

    GPT-4是這樣搞電機的

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

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

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

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

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

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

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

    GPT-4處于一個什么樣的編碼地位

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

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

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

    人工通用智能的火花:GPT-4的早期實驗

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

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

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

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

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

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

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

    GPT-4沒有推理能力嗎?

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

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

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