当前位置: 首页 > news >正文

AI 编程时代,为什么脚手架依然不可替代?

AI 能写代码了,为什么我还是建议你用脚手架?

“AI 给我生成了一个用户注册接口,上线第一天就被 SQL 注入了。”

这是一位真实开发者在技术社群里的吐槽。

一、AI 编程的"暗面":那些没人告诉你的坑

2025-2026 年,AI 编程工具全面爆发。Cursor、Claude Code、GitHub Copilot、通义灵码、WindSurf……你随便拉一个开发者,他都在用 AI 写代码。

但冷静下来看看真实情况:

1.1 AI 生成的代码,安全漏洞遍地

AI 训练数据来自开源社区,而开源社区里有大量不安全的代码。AI 会毫不犹豫地"学习"这些坏习惯:

// AI 可能给你生成这样的代码(真实案例)@GetMapping("/user/{name}")publicUsergetUser(@PathVariableStringname){Stringsql="SELECT * FROM user WHERE name = '"+name+"'";returnjdbcTemplate.queryForObject(sql,newUserRowMapper());}// ↑ SQL 注入,一行搞定
// AI 可能这样处理密码user.setPassword(request.getPassword());// 明文存储,nice
// AI 可能这样处理权限@DeleteMapping("/admin/user/{id}")publicvoiddeleteUser(@PathVariableLongid){userService.deleteById(id);// 没有权限校验,任何人调接口就能删用户}

你让 AI 写 100 个接口,可能 30 个有安全问题。而你一个都看不出来——因为 AI 生成的代码"看起来很专业"。

1.2 AI 不懂你的架构,每次都在"重新发明轮子"

假设你的项目已经有一套异常处理体系:

// 你们项目的标准写法@PostMapping("/order")publicResult<OrderVO>createOrder(@RequestBody@ValidOrderCreateDTOdto){returnResult.success(orderService.create(dto));}// 异常由 GlobalExceptionHandler 统一捕获// 业务异常抛 BizException,框架自动包装成标准响应

但 AI 不知道。它会给你生成这样的代码:

// AI 生成的写法——完全无视你项目的规范@PostMapping("/order")publicMap<String,Object>createOrder(@RequestBodyMap<String,Object>params){Map<String,Object>result=newHashMap<>();try{// 业务逻辑混在 Controller 里Orderorder=newOrder();order.setProductName((String)params.get("productName"));order.setPrice(newBigDecimal((String)params.get("price")));orderMapper.insert(order);result.put("code",200);result.put("msg","success");result.put("data",order);}catch(Exceptione){result.put("code",500);result.put("msg",e.getMessage());// 异常信息直接暴露给前端}returnresult;}

每一个新对话,AI 都在从零开始"设计"你的系统。它不知道你项目有统一的Result封装、有统一的异常处理、有 DTO 校验规范。它只知道「你要一个创建订单的接口」。

1.3 AI 生成的代码无法维护

这是最致命的问题。想象一下:

第一天:让 AI 写了用户模块 → Result<T> 返回格式 第二天:让 AI 写了订单模块 → Map<String, Object> 返回格式 第三天:让 AI 写了支付模块 → ResponseEntity 返回格式 第四天:让 AI 写了商品模块 → 自定义 ResponseVO 返回格式

同一个项目,4 种返回格式。后面接手的人(可能是三个月后的你自己)看着这堆代码,只能默默关掉 IDE。

更别提:

  • 有的接口用@Valid校验参数,有的手动 if-else
  • 有的模块用 MyBatis-Plus,有的直接写 JdbcTemplate
  • 有的地方用了缓存,有的地方查询没走缓存
  • 有的接口有权限校验,有的完全没有
  • 异常处理方式五花八门:有的 try-catch,有的抛异常,有的返回 null

1.4 多租户?数据权限?AI 根本想不到

如果你做的是 SaaS 系统,需要多租户隔离:

// AI 完全不会考虑租户隔离@GetMapping("/orders")publicList<Order></
http://www.rkmt.cn/news/1498238.html

相关文章:

  • 2026四川成都定制游怎么选导游|TOP8纯玩路线与熊猫+火锅+宽窄巷子体验解 - 随峰国旅
  • 2026年上海搬家公司大盘解析 传统搬家套路梳理与日式一站式服务全面对比 - 信息热点
  • 2026安徽中考分数不够普高怎么办?有什么出路? - 小张zc
  • 住宅代理 vs 链式代理:区别、原理与应用场景全解析
  • OpenClaw 使用教程:从入门到实战
  • 2025_NIPS_Prediction and Control in Continual Reinforcement Learning
  • 黄冈叛逆特训学校前十强是哪些?这10所针对网瘾、厌学、叛逆的矫正学校,已成功帮助上千个家庭! - 辛云教育资讯
  • 4 约束显化:通过意图协议将 LLM 不可突破边界转化为机器可读契约
  • 官网最新 森辰 GEO 官方发布|官方企业电话联系方式 权威认证咨询专线 - 信息热点
  • DAM-3059HA_讲解
  • 2026重庆名表回收榜单:谁是TOP1?当属收的顶 - 奢侈品回收测评
  • 在Ubuntu 22.04上从源码编译IPOPT与HSL库:一份避坑指南与性能调优建议
  • BGP Peer Group保姆级配置指南:用华为/思科设备5分钟搞定邻居批量管理
  • 天津实体门店黄金回收 专业资质齐全 本地老牌商家靠谱不踩坑 - 奢侈品回收评测
  • 告别黑盒:深入解读OOMMF MIF 2.1文件,打造你的自定义微磁模拟脚本
  • 还在一个个打开PSD找素材?教你一招,文件夹里秒看设计稿内容
  • 2026六安工伤律师事务所推荐排行 权威评测与选择攻略 - 极欧测评
  • 从零搭建企业网:手把手教你用eNSP模拟千人校园网络规划(附拓扑与配置)
  • MySQL查看数据库编码、数据表编码、排序规则(乱码问题彻底解决)
  • 2026常州闲置名牌包包变现,8家回收机构横向测评,到手价排行公示 - 生活测评君
  • 全球供应链风险管控视角:解读一体化关务系统的核心价值 - Discorery
  • CANoe测试工程师必看:CAPL全局变量在多个Simulation Node里到底怎么用?
  • 华为交换机开启snmp
  • 2026 昌邑厨卫屋面地下室漏水瓷砖空鼓测评:吉修匠 99.8 分五星榜首 - 吉修匠
  • 开启全局代理后网络变慢,问题出在哪
  • 大模型三类分类测评指标梳理
  • 中央重磅部署“人工智能+” 推动一二三产业向智能化跃迁
  • 【Hermes Agent 进阶教程】彻底解决本地大模型/慢速 API 的请求超时问题
  • LLM推荐系统中的不确定性量化与公平性优化
  • 【分享】7.3 提前摸清面试官背景:为什么这不叫“套路“,叫“尊重“