首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >AI写代码到底靠不靠谱?我让Claude Code+GLM5写了5个项目

AI写代码到底靠不靠谱?我让Claude Code+GLM5写了5个项目

作者头像
烟雨平生
发布2026-04-21 14:28:59
发布2026-04-21 14:28:59
1860
举报

2026年,AI写代码已经不是新鲜事。但AI写代码到底靠不靠谱?我让Claude Code写了5个真实项目,给出了成功率、代码质量、踩坑经验。

先看下token消费量:

测试环境

工具: Claude Code(Anthropic的AI编程助手)

模型: GLM5

项目类型: 全栈Web应用、工具库、数据处理、脚本、API

测试周期: 2026年3月-4月

项目1:全栈Web应用(个人博客)

▪ 需求

功能:

  • 文章发布、编辑、删除
  • 标签分类
  • 评论功能
  • Markdown编辑器
  • 响应式设计

技术栈:

  • 前端:React + TypeScript + Tailwind CSS
  • 后端:Node.js + Express + PostgreSQL
  • 部署:Docker + Nginx

▪ 结果

成功率: 85%

能做的:

  • ✅ 生成项目脚手架(create-react-app + Express)
  • ✅ 设计数据库schema
  • ✅ 实现CRUD接口
  • ✅ 实现前端页面布局
  • ✅ 集成Markdown编辑器

不能做的:

  • ❌ 复杂的交互逻辑(如拖拽排序)
  • ❌ 性能优化(如虚拟滚动)
  • ❌ 安全细节(如CSRF防护)

▪ 踩坑

坑1:生成的API没有错误处理

// Claude生成的代码 app.get('/api/posts', async (req, res) => { const posts = await db.query('SELECT * FROM posts'); res.json(posts); }); // 需要手动添加 app.get('/api/posts', async (req, res) => { try { const posts = await db.query('SELECT * FROM posts'); res.json(posts); } catch (error) { console.error(error); res.status(500).json({ error: 'Internal server error' }); } });

坑2:SQL注入风险

// Claude生成的代码(有注入风险)app.get('/api/posts/:id', async (req, res) => { const { id } = req.params; const post = await db.query(`SELECT * FROM posts WHERE id =

▪ 评分

代码质量: ⭐⭐⭐⭐☆ (4/5)

可维护性: ⭐⭐⭐☆☆ (3/5)

安全性: ⭐⭐☆☆☆ (2/5)

项目2:工具库(日期处理)

▪ 需求

功能:

  • 日期格式化
  • 日期计算(加减天数)
  • 日期比较
  • 时区转换
  • 相对时间(如"3天前")

技术栈:

  • TypeScript
  • Jest(测试)

▪ 结果

成功率: 95%

能做的:

  • ✅ 实现所有核心功能
  • ✅ 处理边界情况(如闰年)
  • ✅ 编写单元测试
  • ✅ 生成文档

不能做的:

  • ❌ 性能优化(如大量日期的批量处理)

▪ 踩坑

坑1:时区处理有bug

// Claude生成的代码(有时区bug) function formatDateTime(date: Date, timeZone: string): string { return date.toLocaleString('en-US', { timeZone }); } // 实际测试时发现某些时区不准确 // 需要手动修复 function formatDateTime(date: Date, timeZone: string): string { return date.toLocaleString('en-US', { timeZone, year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false }); }

▪ 评分

代码质量: ⭐⭐⭐⭐⭐ (5/5)

可维护性: ⭐⭐⭐⭐☆ (4/5)

测试覆盖: ⭐⭐⭐⭐☆ (4/5)

项目3:数据处理脚本(日志分析)

▪ 需求

功能:

  • 解析日志文件
  • 统计错误数量
  • 生成报表
  • 发送邮件通知

技术栈:

  • Python
  • pandas
  • smtplib

▪ 结果

成功率: 90%

能做的:

  • ✅ 解析日志文件
  • ✅ 统计错误数量
  • ✅ 生成CSV报表
  • ✅ 发送邮件

不能做的:

  • ❌ 大文件处理(日志文件超过1GB时会OOM)

▪ 踩坑

坑1:大文件OOM

# Claude生成的代码(有OOM风险) def parse_log_file(file_path): with open(file_path, 'r') as f: lines = f.readlines() # 一次性读取所有行 # 处理逻辑... # 需要手动修复 def parse_log_file(file_path): results = [] with open(file_path, 'r') as f: for line in f: # 逐行读取 # 处理逻辑... results.append(result) return results

▪ 评分

代码质量: ⭐⭐⭐⭐☆ (4/5)

性能: ⭐⭐⭐☆☆ (3/5)

健壮性: ⭐⭐⭐☆☆ (3/5)

项目4:RESTful API(任务管理)

▪ 需求

功能:

  • 创建任务
  • 更新任务
  • 删除任务
  • 查询任务列表
  • 任务状态流转

技术栈:

  • Go + Gin
  • PostgreSQL
  • Docker

▪ 结果

成功率: 90%

能做的:

  • ✅ 设计API规范
  • ✅ 实现所有CRUD接口
  • ✅ 数据库迁移
  • ✅ 生成Swagger文档

不能做的:

  • ❌ 复杂的查询(如多表联查)
  • ❌ 性能优化(如索引优化)

▪ 踩坑

坑1:并发安全问题

// Claude生成的代码(有并发问题) func UpdateTaskStatus(c *gin.Context) { id := c.Param("id") var req UpdateStatusRequest c.BindJSON(&req) // 查询 task, _ := db.GetTask(id) // 更新 task.Status = req.Status db.UpdateTask(task) c.JSON(200, task) } // 需要手动添加事务和乐观锁 func UpdateTaskStatus(c *gin.Context) { id := c.Param("id") var req UpdateStatusRequest c.BindJSON(&req) tx := db.Begin() defer tx.Rollback() // 查询(加锁) task, _ := tx.GetTaskForUpdate(id) // 检查版本 if task.Version != req.Version { c.JSON(409, gin.H{"error": "conflict"}) return } // 更新 task.Status = req.Status task.Version++ tx.UpdateTask(task) tx.Commit() c.JSON(200, task) }

▪ 评分

代码质量: ⭐⭐⭐⭐☆ (4/5)

并发安全: ⭐⭐⭐☆☆ (3/5)

性能: ⭐⭐⭐☆☆ (3/5)

项目5:CLI工具(文件转换)

▪ 需求

功能:

  • 转换图片格式(PNG→JPG, JPG→PNG)
  • 批量处理
  • 压缩图片
  • 生成缩略图

技术栈:

  • Rust
  • clap(命令行解析)
  • image库

▪ 结果

成功率: 80%

能做的:

  • ✅ 命令行参数解析
  • ✅ 图片格式转换
  • ✅ 批量处理
  • ✅ 生成缩略图

不能做的:

  • ❌ 复杂的压缩算法
  • ❌ 多线程优化

▪ 踩坑

坑1:内存泄漏

// Claude生成的代码(有内存泄漏) fn convert_image(input: &Path, output: &Path) -> Result<()> { let img = image::open(input)?; img.save(output)?; Ok(()) } // 需要手动添加资源清理 fn convert_image(input: &Path, output: &Path) -> Result<()> { let img = image::open(input)?; let mut out_file = File::create(output)?; img.write_to(&mut out_file, ImageFormat::Png)?; drop(out_file); // 显式释放 Ok(()) }

▪ 评分

代码质量: ⭐⭐⭐☆☆ (3/5)

性能: ⭐⭐⭐☆☆ (3/5)

安全性: ⭐⭐⭐⭐☆ (4/5)

总结:AI写代码的优缺点

▪ 优点

  1. 速度快生成脚手架、CRUD代码比手写快10倍
  2. 覆盖广各种编程语言、框架都能处理
  3. 代码规范生成的代码通常符合最佳实践
  4. 降低门槛新手也能快速搭建项目

▪ 缺点

  1. 不擅长复杂逻辑如性能优化、并发安全、安全防护
  2. 有bug生成的代码需要测试和review
  3. 缺乏上下文不知道项目的业务逻辑和架构
  4. 过度依赖可能导致开发者能力退化

以上。

整体上的感觉,目前仍然需要“扶着走”。AI会有不少清奇的逻辑回路,需要纠正。

如何正确使用AI写代码?

▪ 1. 搭建脚手架

适合: 生成项目结构、基础配置

不适合: 复杂的架构设计

▪ 2. 生成样板代码

适合: CRUD接口、基础页面

不适合: 核心业务逻辑

▪ 3. 编写测试

适合: 单元测试、集成测试

不适合: 性能测试、压力测试

▪ 4. 代码审查

适合: 检查代码风格、常见错误

不适合: 业务逻辑review

一句话记住核心

AI写代码 = 快速生成脚手架 + 大量样板代码 + 需要人工测试和优化

AI是助手,不是替代。真正有价值的是:理解业务、架构设计、性能优化、安全防护——这些都需要人的判断。

AI已来,程序员的天已经塌了!

有产品Sense的程序员将统治世界!

Vibe Coding:LLM幻觉也能写出高质量代码?

LLM天生有幻觉,为啥 VibeCoding 还被吹爆?不怕写出 Bug 吗?

学习了知识图谱,发现大模型的幻觉还能再降低几个点!怎么做到的?一文讲清楚

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 的数字化之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档