成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

首測!GPT-4o做Code Review可行嗎?

原創 精選
人工智能
總的來說,審查的性質和結果給我留下了深刻的印象。GPT-4o生成的代碼雖然不太理想,但也還可以。在對代碼的批評中,沒有“書呆子的笨拙腳步”;相反,它輕輕地引導讀者走向更好的方向。

編輯 | 言征

出品 | 51CTO技術棧(微信號:blog51cto)

近日,OpenAI一記重拳,推出了GPT-4o(“o”表示“omni”),將語音識別和對話方面的優勢展示的淋漓盡致。幾乎可以肯定,它也是一個更強的LLM。但它能進行代碼審查嗎?本文通過一些測試來尋找答案。

1.長乘法:交給計算機就可以

首先,我檢查了它是否可以進行long乘法運算:

圖片圖片

答案是正確的,通過在線計算器上可以確認。但請注意,它并沒有試圖“計算出”結果——它只是將問題甩給了計算器。末尾的“查看分析”的藍色圖標基本上說明了這一點。這在之前的模型上都沒有做到。

2.代碼審查

我個人對正式嚴謹的代碼審查沒有興趣。是的,有時初級開發人員可能確實需要這樣的審查,但單元測試和配對編程通常足以消除不良的編程習慣。但是,幾句含糊的評論可以幫助指出代碼中的潛在小問題,而不會顯得對容易重寫的代碼片段強加某種權威性的命令。

簡而言之,代碼審查更多的是一種social互動,而不是其他任何東西。請專注于工程問題,而不是代碼的語義細節。

然而,代碼審查是開發人員使用大型語言模型(LLM)的一個好案例。在這里,我將查看三段不同的代碼,每段代碼都只是繪制一個帶有對角線的矩形框。我將添加問題,并查看GPT-4o(通過ChatGPT)如何對它們進行審查。

接下來,我們從簡單的C#對角線繪制程序開始:

using System;
 
public class Program
{
  public static void Main()
  {
    BoxWithDiagonalLine(5);
    BoxWithDiagonalLine(6,1);
    BoxWithDiagonalLine(6,-1);
    BoxWithDiagonalLine(2);
    BoxWithDiagonalLine(-1);
  }
 
  // Example 1
  public static void BoxWithDiagonalLine(int boxsize, int linepos = 0)
  {
    for(int i=0; i < boxsize; i++)
    {
      for (int j = 0; j < boxsize; j++)
      {
        if (j == linepos) Console.Write("x ");
        else Console.Write("o ");
      }
      linepos++;
      Console.Write("n");
    }
    Console.Write("n");
  }
}

將這個代碼丟進https://dotnetfiddle.net/(不過請將編譯器設置為至少.NET 6)并查看響應:

圖片圖片

這段代碼相當簡單,也相對容易理解。外部循環控制行,內部循環在正確的位置放置“x”。變量命名很簡潔,代碼很短。該方法有一個默認值,用于生成從左上角到右下角的完整對角線。雖然我們可以將起始線位置向左或向右移動,但擁有負的盒子大?。╞oxsize)并沒有多大意義。因此,我們可以通過將方法參數更改為無符號整數(unsigned int)來改進它。這將立即阻止上一個示例甚至無法編譯。一個非常大的linepos(起始線位置)將不可見,但它并不危險。

到目前為止,沒有什么可評論的。

接下來,將for循環替換成while循環:

// Example 2
public static void BoxWithDiagonalLine(int boxsize, int linepos = 0)
{
  int i = 0;
  while(i++ < boxsize)
  {
    int j = 0;
    while (j++ < boxsize)
    {
      if (j == linepos + 1) Console.Write("x ");
        else Console.Write("o ");
    } linepos++;
    Console.Write("n");
  }
  Console.Write("n");
}

現在這段代碼可以運行,但值得稍微皺一下眉頭。通過在后置遞增循環變量(在i和j后面的++意味著值首先被讀取,然后再增加1)我們節省了一些空間,但我們需要那個笨拙的linepos + 1表達式。

while循環不如for循環那樣明確地表達開始和結束狀態——但我們并沒有陷入任何瘋狂的狀態。

我們進行最后一次更改。這次代碼中有一個變量來“搗亂”,它試圖使用linepos來控制外部循環:

//Example 3
public static void BoxWithDiagonalLine(int boxsize, int linepos = 0)
{
  while(linepos < boxsize)
  {
    int j = 0;
    while (j++ < boxsize)
    {
      if (j == linepos + 1) Console.Write("x ");
        else Console.Write("o ");
    }
    linepos++;
    Console.Write("n");
  }
  Console.Write("n");
}

在試圖不必要地移除一個循環變量的過程中,矩形框本身將不再完整——盡管使用默認值時可以工作。事實上,這解決了另一個問題,即總是在底部角落可靠地以一個“×”結束。

圖片圖片

這段糟糕的代碼可能是因為開發者不當地繼續使用了while循環。

現在讓我們總結一下我們如何看待這些不同版本:

第一個例子是可行的,但我們可以強制參數為正數。然而,沒有注釋的話,這段代碼的功能并不十分清晰。

第二個例子使用了while循環,它不像for循環那樣具有確定性。同時,由于后置遞增,還需要考慮一個丑陋的表達式。

第三個例子完全是錯誤的,盡管在默認情況下它得到了正確的結果。

我們對AI代碼審查有什么期望?首先,我沒有給出任何注釋,那么它能否弄清楚這段代碼的作用?只有方法的名稱揭示了這一點。

這是GPT-4o的回應:

“Your code is functional and effectively generates a box with diagonal lines based on the provided parameters. However, there are a few improvements and edge cases to consider:
1.Input Validation: Ensure that the box size is positive and greater than 1, since a box with a size less than 2 doesn’t make much sense.
2.Handling linepos: Improve handling of diagonal positions to ensure the diagonals are correctly drawn when linepos is negative or greater than the box size.
3.Code Readability: Add comments and improve variable naming for better readability and maintenance.”

【譯】“您的代碼是功能性的,并且能夠有效地根據提供的參數生成帶有對角線的矩形框。但是,有幾個改進點和邊緣情況需要考慮:

1.輸入驗證:確保矩形框的大小是正數且大于1,因為大小小于2的矩形框并沒有太大意義。

2.處理linepos:改進對角線位置的處理,以確保當linepos為負數或大于矩形框大小時,對角線能夠正確繪制。

3.代碼可讀性:添加注釋并改進變量命名以提高代碼的可讀性和可維護性?!?/p>

所以它確實理解了代碼的作用——即使它認為程序畫的是“lines”而不是“line”。這仍然很好。

它建議的代碼如下:

// ChatGPT4o suggested code
public static void BoxWithDiagonalLine(int boxSize, int linePos = 0)
{
  if (boxSize < 2)
  {
    Console.WriteLine("Box size must be greater than 1.");
    return;
  }
 
  // Adjust linePos if it's out of the box boundaries
  if (linePos < 0) linePos = 0;
  if (linePos >= boxSize) linePos = boxSize - 1;
  for (int i = 0; i < boxSize; i++)
  {
    for (int j = 0; j < boxSize; j++)
    {
      if (j == linePos) Console.Write("x ");
        else Console.Write("o ");
    }
    linePos++;
 
    // Reset linePos if it goes out of the box boundaries
    if (linePos >= boxSize) linePos = 0;
    Console.Write("n");
}
Console.Write("n");

以下是將其放入dotnetfiddle.net的結果:

圖片圖片

我認為大多數人都會對小于2的boxSize感到滿意。同時,它也很好地使用了駝峰命名法來命名參數,這在C#中是正確的。但遺憾的是,它忽略了改變位置以使線條從更低處開始的想法。而由于重置了linepos,我們在第二個例子的底部得到了那個糟糕的錯誤。

不過,從代碼審查的角度來看,它確實抓住了要點。

3.第二個例子結果

讓我們給它輸入第二個例子,看看它的表現如何。下面是一些有趣的評論:



“The use of while loops is functional but could be less intuitive compared to for loops for such iterations.”


Excellent. This is exactly the right note.


“The condition j == linepos + 1 is used to determine where to place “x”. This works but can be made more intuitive by aligning with the index i.”



再次強調,這是很好的。它理解了功能性和可讀性之間的區別。

生成的代碼限制了linepos的值,并且相當奇怪地使用了取模函數來改變這個值。但最終得到了相同的結果。它回歸到了for循環,這是很棒的。

4.第三個例子結果

最后,讓我們給出糟糕的例子3,看看它的表現如何。奇怪的是,它沒有發現這個錯誤,但提出了以下建議:



“Edge Cases:

– When linepos is negative, it works but may not be intended.”



這表明它完全沒有理解代碼——當然,我也沒有明確說明我在做什么。所以,也許“wrapping line ”可能是一個合理的猜測?

5.結論

總的來說,審查的性質和結果給我留下了深刻的印象。GPT-4o生成的代碼雖然不太理想,但也還可以。在對代碼的批評中,沒有“書呆子的笨拙腳步”;相反,它輕輕地引導讀者走向更好的方向。

結果可能沒有達到預期——態度很好但代碼略有不準確。然而,新手應該會很喜歡;在這方面,它至少比部分人做得更好。

參考鏈接:https://thenewstack.io/reviewing-code-with-gpt-4o-openais-new-omni-llm/

想了解更多AIGC的內容,請訪問:

51CTO AI.x社區

http://www.ekrvqnd.cn/aigc/

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2024-05-21 12:23:17

2024-06-05 08:29:35

2024-05-14 19:16:52

ChatGPTGPT-4oOpenAI

2025-04-15 08:01:12

2025-04-08 02:26:00

2024-05-14 08:23:27

GPT-4oAI技術

2025-05-26 09:05:00

2024-06-21 09:51:17

2025-03-31 08:44:00

GPT-4o模型技術

2024-06-27 12:45:30

2024-05-17 09:35:55

GPT-4o模型OpenAI

2024-10-16 15:07:57

2024-05-30 13:13:43

2021-04-25 09:19:22

騰訊Code Reviewleader

2024-05-14 11:29:15

2024-08-14 14:30:00

AI訓練

2025-03-31 08:50:00

AI生成模型

2024-08-08 14:27:29

2024-08-13 13:50:00

數據模型

2024-06-05 13:09:26

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品一区二区三区丝袜 | 先锋av资源在线 | 亚洲精品一区二区在线观看 | 日韩三级精品 | 国产日韩欧美在线 | www.狠狠干| 欧美一区二不卡视频 | 天天综合网天天综合 | 国产片侵犯亲女视频播放 | 在线欧美 | 超碰在线播 | 欧美黄色免费网站 | 国产a级毛片 | 成人精品免费视频 | 亚洲国产精品成人综合久久久 | va在线| 日本精品一区二区 | 黑人成人网 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 2018国产精品| 日本大香伊一区二区三区 | 日本激情一区二区 | 国产欧美精品一区二区色综合 | 国产一级黄色网 | 精品国产一区二区三区久久久蜜月 | 国产精品日韩欧美一区二区 | 先锋资源站 | av在线免费观看网站 | 97视频久久 | 久久免费观看视频 | 午夜精品久久久久久 | 亚洲免费在线 | 久久人体 | 日韩欧美精品一区 | 国产精品1区2区3区 一区中文字幕 | 国产成人免费视频网站高清观看视频 | 特级生活片 | 亚洲国产一区视频 | 国产精品视频二区三区 | 久久精品成人 | 国产成人叼嘿视频在线观看 |