AIGC标识 AI 辅助编程工具与 Vibe Coding 实践记录

AI 辅助编程工具与 Vibe Coding 实践记录

一、主流 AI 辅助编程工具

工具名称 使用形式 功能简介
Cursor 客户端(AI 编程 IDE) 基于代码编辑器开发的 AI 编程工具,需下载安装。支持代码补全、自然语言修改代码、理解整个项目以及自动执行多步骤编程任务。
ChatGPT 网页版、桌面客户端、移动客户端 通过自然语言生成代码、解释错误、设计程序结构和编写测试代码,适合学习编程和解决开发问题。
Windsurf / Devin Desktop 客户端、IDE 插件 原本是一款 AI 编程 IDE,现逐步发展为 Devin Desktop。能够结合编辑器和 AI Agent,帮助开发者编写、修改、测试和调试代码。
Gemini Code Assist IDE 插件、网页版 可集成到 VS Code、JetBrains 等开发工具中,根据注释和上下文生成代码,也能帮助解释代码和修复错误。
GitHub Copilot IDE 插件、网页版、客户端 可安装在 VS Code、Visual Studio、JetBrains 等 IDE 中,也可在 GitHub 网页和 Copilot 客户端中使用,提供代码补全、代码解释、代码生成和代码修改等功能。

二、什么是 Vibe Coding

Vibe Coding 通常翻译为 "氛围编程""感觉编程"。它是一种以自然语言描述需求、让 AI 生成和修改代码的编程方式。

在这种方式中,开发者不一定从头开始手动编写每一行代码,而是先告诉 AI 想实现什么功能,例如:

请使用 Java 编写一个方法,找出集合中库存最大的粮食对象,并处理集合为空的情况。

AI 会根据需求生成代码,开发者再通过继续对话的方式让 AI 修改代码、增加功能或修复问题。

Vibe Coding 的重点是"通过描述想法来驱动软件开发"。 它可以提高开发效率,特别适合:

  • 快速制作原型
  • 编写重复性代码
  • 学习新技术

但是,AI 生成的代码不一定完全正确,仍然需要开发者检查代码逻辑、运行测试,并注意安全性和可维护性。因此,Vibe Coding 不能完全代替程序员的思考和代码审核


三、使用 AI 工具编程记录

1. 提示词原文

请使用 Java 编写一个完整、可运行的示例程序,实现以下功能:

1. 定义 Grain 粮食实体类,包含以下属性:
   - grainId,类型为 int
   - grainName,类型为 String
   - inventory,类型为 int,表示库存

2. 编写一个工具方法,传入 List<Grain> 粮食集合,找出库存最大的粮食对象并返回。

3. 在 main 方法中准备 3 条测试数据:
   - 玉米,库存 800
   - 水稻,库存 300
   - 大豆,库存 400

4. 调用工具方法,打印库存最大粮食的名称和库存。

5. 注意判空:
   - 如果集合为 null 或空集合,不能抛出 NullPointerException;
   - 对这种情况进行合理处理。

要求代码结构清晰,使用 Java 标准集合类,不需要使用数据库或第三方框架。

2. AI 返回的代码

import java.util.Arrays;
import java.util.List;

public class Main {

    public static void main(String[] args) {
        List<Grain> grains = Arrays.asList(
                new Grain(1, "玉米", 800),
                new Grain(2, "水稻", 300),
                new Grain(3, "大豆", 400)
        );

        Grain maxInventoryGrain = GrainUtils.findMaxInventory(grains);

        if (maxInventoryGrain == null) {
            System.out.println("粮食集合为空,没有可用的粮食数据。");
        } else {
            System.out.println("库存最大粮食:" + maxInventoryGrain.getGrainName());
            System.out.println("库存:" + maxInventoryGrain.getInventory());
        }
    }
}

/**
 * 粮食实体类
 */
class Grain {
    private int grainId;
    private String grainName;
    private int inventory;

    public Grain(int grainId, String grainName, int inventory) {
        this.grainId = grainId;
        this.grainName = grainName;
        this.inventory = inventory;
    }

    public int getGrainId() {
        return grainId;
    }

    public void setGrainId(int grainId) {
        this.grainId = grainId;
    }

    public String getGrainName() {
        return grainName;
    }

    public void setGrainName(String grainName) {
        this.grainName = grainName;
    }

    public int getInventory() {
        return inventory;
    }

    public void setInventory(int inventory) {
        this.inventory = inventory;
    }
}

/**
 * 粮食工具类
 */
class GrainUtils {

    /**
     * 找出库存最大的粮食对象。
     *
     * @param grains 粮食集合
     * @return 库存最大的粮食对象;集合为空时返回 null
     */
    public static Grain findMaxInventory(List<Grain> grains) {
        if (grains == null || grains.isEmpty()) {
            return null;
        }

        Grain maxGrain = null;

        for (Grain grain : grains) {
            if (grain == null) {
                continue;
            }

            if (maxGrain == null || grain.getInventory() > maxGrain.getInventory()) {
                maxGrain = grain;
            }
        }

        return maxGrain;
    }
}

3. 运行结果

库存最大粮食:玉米
库存:800

四、对 AI 生成代码的评价

这段代码总体上是合理的,能够满足题目要求。具体分析如下:

✅ 优点

  1. 实体类设计合理Grain 类包含了题目要求的三个属性:grainIdgrainNameinventory,并提供了完整的 getter/setter 方法。
  2. 核心逻辑正确GrainUtils.findMaxInventory 方法使用循环遍历集合,能够正确找出库存最大的粮食对象。
  3. 判空处理完善:对 null 集合和空集合进行了判断,遇到这些情况时返回 null,不会抛出空指针异常。
  4. 测试数据正确main 方法准备了玉米、水稻和大豆三条测试数据,并正确打印了库存最大的玉米及其库存。
  5. 额外健壮性:代码还额外处理了集合中存在 null 元素的情况(if (grain == null) continue;),具有一定的防御性编程意识。
  6. 算法效率高:只需遍历集合一次,时间复杂度为 O(n),空间复杂度为 O(1)。

⚠️ 需要注意的地方

AI 生成代码虽然能够快速完成任务,但开发者仍然应该自己编译和运行代码。建议进一步测试以下边界情况:

测试场景 预期行为
传入 null 集合 返回 null,不抛异常
传入空集合 返回 null,不抛异常
集合中只有一个粮食对象 返回该对象
所有粮食库存都相同 返回第一个最大库存对象
集合中包含 null 元素 跳过 null,正常处理
库存为零或负数 正常比较,不抛异常

📝 总结

这段代码可以作为本题的合格实现,但不能完全依赖 AI 输出,仍然需要人工检查和测试。Vibe Coding 是提升效率的好工具,但开发者的代码审查能力依然是保障质量的关键。

本文记录了使用 AI 工具进行 Vibe Coding 的完整过程,包括工具介绍、概念说明、实际编程记录和代码评价,供学习参考。

posted @ 2026-09-09 14:41  zmynml  阅读(9)  评论(0)    收藏  举报