我們將演示使用ChatGPT或GPT-4來檢查和重構代碼的技術,以及討論一些限制,并為在編程工作流中使用這些LLM提供方便的資源。
我們將從檢查和重構的方法開始,對于每種方法,我們希望嘗試不同的提示和所提供的技術,以釋放AI驅動的代碼改進的全部潛力。
用GPT-4重構代碼
重構代碼之所以重要,有以下幾個原因:它增強了可讀性和可維護性,使開發人員更容易理解和修改代碼。它還有助于防止潛在的錯誤,并確保您的代碼遵循已建立的最佳實踐。最終,重構可以產生更高效、更可靠、更健壯的軟件。
GPT-4可以顯著促進這一過程。通過使用GPT-4檢查和評估代碼,您可以快速識別需要改進的地方,并創建更清晰、更高效的代碼。利用GPT-4的功能可以節省時間并減少過程中的人為錯誤,從而更加一致地遵守編碼標準。
使舊代碼現代化
通過將舊函數提供給GPT-4,并要求它根據現代編碼實踐進行重構,可以快速實現代碼的現代化,如根據現代ES6( ECMAScript 6.0)編程標準重構以下代碼。
之前:
Before:
After:
在這個重構版本中,GPT4迅速做出了以下改進:
增加了JSDoc注釋
將tempConvert函數轉換為箭頭函數。
對于不可變變量,將var替換為const。
對字符串比較使用嚴格的相等性檢查(===)。
引入一個常數來消除神奇的數字。
使用模板字面量簡化return語句。
添加編碼最佳實踐或原則
我們公司或代碼庫可能會使用自己希望保留的某些編碼實踐和風格。對于這種情況,請向GPT4提供希望它關注的特定編碼實踐或風格的說明。
Prompt:檢查以下代碼并對其進行重構,使其更加DRY并采用SOLID編程原則。
注意,對于相同的輸入,它采用了SOLID編程原則中的單一責任(Single Responsibility)原則,將函數分為3個。與前面的“現代化”步驟不同,它沒有將函數轉換為箭頭(arrow)函數。
“通過將轉換邏輯提取到單獨的函數中,我們改進了代碼對單一責任原則(SOLID的一部分)的遵守,因為現在每個函數都有一個明確的、集中的目的。”
檢測和修復錯誤
有時我們對代碼可能產生的漏洞或潛在問題視而不見。讓GPT-4檢查和解決代碼問題可以節省的不僅僅是時間。
Prompt:檢查這段代碼的錯誤并重構以修復任何問題…
故意輸入(有缺陷)的程序:
輸出:
GPT-4所做的更改:
增加了輸入參數驗證,以確保items是一個數組,折扣百分比是一個數字。
檢查折扣百分比的邊界條件,以確保它在0-100范圍內。
增加了項目屬性及其類型的驗證,以確保價格和數量為數字。
創建樣板代碼(*我的最愛)
開始新項目可能會很痛苦。GPT-4不知道業務邏輯,但它可以用于第一天要寫的、枯燥的樣板代碼。從技術上講,這不是重構,但它很神奇,可以成為編程生命周期中某個過程的一部分。
Prompt:為我寫一個樣板Node.js函數,它將接受一個User類型的變量,驗證用戶具有正確的權限,從postgres數據庫中獲取一個項目類型Posts的數組并返回它們。為業務邏輯留下注釋。
代碼轉換(遷移)
需要將代碼從一種語言轉換為另一種語言的原因有很多。我們發現一種語言的代碼庫需要替換為另一種語言的代碼,我們需要進行代碼的移植;或者老板讀了一篇關于最新前端框架的文章,要求我們把老程序移植到 {拆分的新代碼庫}。 在任何情況下,GPT-4都可以通過簡單的提示符提供幫助。
Prompt:在Rust中重寫以下代碼:…
向代碼中添加注釋
如果代碼是自解釋的,但需要注釋,這可以節省大量時間。
Prompt:向以下代碼添加注釋…
更好的重構技巧
像生活中的許多事情一樣,使用GPT-4,我們投入越多,得到的回報就越多。在這種情況下,提供更多的背景、說明和指導通常會產生更好的結果。
以下是改進代碼重構的技巧和技巧:
拆分提示: 嘗試將提示和預期結果拆分為多個步驟。保持提示有一個單一的結果已經被證明比組合提示產生更好的結果。例如,要求評審,然后要求基于評審響應的重構。隨著llm增加他們的令牌限制,這可能會變得不那么重要。
舉例: 提供預期的輸入、數據和輸出,以提高準確性和質量。
具體一點: 不要害怕列出你想要的,你知道的,需要的,不應該包括的。
要求它反射: 一種叫做反射的技術已經被證明可以提高GPT4的準確性。基本上就是問它‘你為什么錯了?’或者讓它反思和檢討自己的反應。
限制
這篇文章中,我們已經見識了很強的AI,但是這些模型并不完美,(目前)還不能準確地復制業務邏輯。下面是使用GPT-4檢查或重構代碼時需要注意和避免的事情:
它可能是(自信地)錯誤的: GPT4被訓練得聽起來令人信服,但這并不意味著它總是正確的。另一篇關于用ChatGPT重構Golang的很棒的文章報道了“它擺脫了類型檢查,并自信地解釋說,將非int值斷言為int類型將返回int類型的零值,但這是不正確的,會引起恐慌”。
從長遠來看,節省時間可能并不值得: 當然,GPT4可以在一分鐘內生成50行代碼,但如果它不適合我們的代碼庫,則可能需要花費45分鐘來調試和調整它,這樣還不如自己寫。
它可能會過時: 科技世界發展很快。“GPT-4通常缺乏對其絕大部分數據被切斷后(2021年9月)發生的事件的了解。” 您可能會遇到任何新更新的庫、框架或技術的問題。
結論
人工智能驅動的編程只是一種新事物,但它會一直存在下去。如果使用得當,它可以節省時間,并幫助我們編寫更好的代碼。我希望您喜歡本文,并掌握了一些提高編程效率或錯誤處理的新技能。
審核編輯 :李倩
-
人工智能
+關注
關注
1793文章
47567瀏覽量
239417 -
GPT
+關注
關注
0文章
356瀏覽量
15454
原文標題:如何借助GPT-4評審、重構代碼?
文章出處:【微信號:軟件質量報道,微信公眾號:軟件質量報道】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論