生成式人工智慧(GenAI)在軟體開發領域的出現和日益普及,為程式碼的自動化和加速創建帶來了巨大的潛力。
GenAI 利用經過大量程式碼資料訓練的大型語言模型(LLMs),根據自然語言提示自動產生程式碼。從產生程式碼片段到創建完整的函數,GenAI 有望節省重複性任務的時間。諸如 Copilot 和 Cursor 等工具,為開發人員提供了更快的開發週期和更高的生產力。
然而,軟體專案的長期成功和可持續性關鍵在於程式碼的可維護性和可測試性,GenAI 產生的程式碼在這些方面表現如何呢?我收集了一些調查報告,其結果如下:
(1) Stack Overflow 的 2024 年開發者調查顯示,63% 的專業開發者目前正在開發過程中使用 AI,另有 14% 的人表示他們計劃很快開始使用 AI。[1]
(2)
GitClear 的研究發現,2024 年重複程式碼區塊的數量增加了八倍,這表明程式碼的重複使用率下降 。報告還指出,開發人員花費更多時間除錯 AI 產生的程式碼 。[2]
2024 年,GitClear 追蹤到重複程式碼區塊增加了 8 倍,冗餘度現在比 2022 年高出 10 倍。[3]
(3) AI 模型有時會產生不必要的冗長或重複的程式碼,其長度可能比手寫程式碼長 50% [2]
(4) Google 的 2024 年 DORA 報告發現,AI 使用率增加 25% 會加快程式碼審查和改善文件編寫,但同時會導致交付穩定性下降 7.2% [2]。
(5) GenAI 與人工編寫的程式碼: 一項人工研究發現,68.63% 的參與者認為大型語言模型產生的解決方案的可讀性有所提高,然而,大多數解決方案都引入了錯誤或新的可維護性問題 。相較於人工編寫的程式碼,大型語言模型產生的程式碼(GPT-4)展現出更高的循環複雜度(Cyclomatic Complexity),這暗示著過度設計的傾向 。[4]
(6) BlueOptima 的報告指出,只有不到 1% 的開發人員始終提交未經修改的 GenAI 程式碼 。在配備官方授權 GenAI 工具的 3,000 名開發人員的測試組中,只有 12% 的開發人員提交了 AI 生成的程式碼而沒有進行重大更改。這種差異凸顯了在保障程式碼品質和可維護性方面仍然依賴人工監督。開發人員經常需要改進、優化並將 AI 生成的程式碼整合到現有系統中,這表明人類專業知識的作用不可或缺。
從上述結果可以得知,生成式人工智慧(GenAI)在軟體開發領域的應用,確實為程式碼自動化和開發效率帶來了顯著提升。
然而,過度依賴 GenAI 生成的程式碼可能導致以下問題:
(1) 技術負債累積:AI 編碼工具生成的程式碼往往缺乏最佳實踐,導致程式碼重複率上升,維護性下降,進而增加技術負債。
(2) 程式碼重複性增加:研究發現,AI 生成的程式碼中,重複區塊的頻率顯著提高,這可能使未來的維護和擴展變得更加困難。
(3) 維護性和可測試性問題:雖然 GenAI 可以加速程式碼生成,但其產出的程式碼可能在可讀性和結構性上存在問題,增加了後續維護和測試的難度。
(4) 交付穩定性下降:雖然 AI 工具可以加快程式碼審查和文件編寫,但過度依賴可能導致交付穩定性下降。
因此,在軟體開發過程中,應謹慎使用 GenAI 工具,結合人工審查和最佳實踐,以確保程式碼的質量和長期可維護性。
參考文獻:
[1] AI Copilot Code Quality: 2025 Look Back at 12 Months of Data
https://www.gitclear.com/ai_assistant_code_quality_2025_research
[2] How AI generated code compounds technical debt, By Bill Doerrfeld
https://leaddev.com/software-quality/how-ai-generated-code-accelerates-technical-debt
[3] Why AI-generated code is creating a technical debt nightmare
https://www.okoone.com/spark/technology-innovation/why-ai-generated-code-is-creating-a-technical-debt-nightmare/
[4] Evaluating the Effectiveness of LLMs in Fixing Maintainability Issues in Real-World Projects
[5] The human touch: Why GenAI cannot ship code alone
https://www.blueoptima.com/the-human-touch-why-genai-cannot-ship-code-alone/
發表迴響