V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
doraemonki
V2EX  ›  程序员

vibe coding 最佳实践之"约束带来自由"

  •  
  •   doraemonki · 22 小时 2 分钟前 · 971 次点击

    有没有人会感觉 vibe coding 开发出来的东西代码一多就变成了屎山,自己失去了对项目的掌控感,经常改了一个地方其地方就爆炸。

    我想分享一个我的 vibe coding 最佳实践: 极致严格的约束+90%的测试覆盖率。

    1. 给项目开启最严格的 lint

      比如 Go 的 golangci-lint ,Rust 的 Cargo clippy 。以前人因为偷懒老是忽略编译器警告,但是 AI 时代改起来真的很快,而且帮助很大。

    2. 强制 90%的测试覆盖率(Design for Testability)

      让 AI 生成的代码设计全部以提高测试覆盖率为主要目标,后期加需求再也不担心破坏已实现功能了。真的爽的一批啊,体验过就知道什么叫做稳稳地幸福。

    3. 强制代码行数检查

      从我强制要求极高的测试覆盖率,并开启所有合理的 lint 检查之后,代码质量肉眼可见的提升了。但我逐渐发现还缺少一个工具用来限制代码行数,AI 老是喜欢在一个代码文件堆屎山啊!开源社区逛了一圈发现还没有类似的工具,于是自己用 Rust 搞了个sloc-guard

    4. 文件命名风格检查

      个人不太喜欢 commonhelper,这种毫无意义的文件名,以前懒还能忍,自从代码基本都让 AI 写之后,索性也是直接上了强制约束。

    这一套搞下来,我觉得基本实现了全自动防止 AI 堆屎山的效果。我相信 AI 写的代码可读性已经超过大多数人了,AI 也不会偷懒,该有的注释也都有,写出来的代码可以用赏心悦目来形容了哈哈。

    Talk is cheap, show me the code.

    sloc-guard,这个 Rust 项目全程实践上述做法,原汤化原食,5 万行代码勉强算是个中型项目吧,90%测试覆盖率,clippy 严格模式 0 warn ,没一个文件超过 600 行,我保证这个项目的规范程度绝对达到了非常高的水平,不信来看看嘿嘿

    9 条回复    2026-01-01 07:04:58 +08:00
    hihanley
        1
    hihanley  
       19 小时 48 分钟前
    有用,还有什么约束吗?
    fulln
        2
    fulln  
       19 小时 17 分钟前
    其实代码生成的另外一个问题是: 代码的逻辑重复,尤其是在多表关联或者多模块关联的时候 , 原来的模块已经生成好的代码不用, 反而去重新定义一遍。
    fulln
        3
    fulln  
       19 小时 16 分钟前
    非常像初级开发或者刚接触项目的开发, 但是 AI 永远不会有熟悉项目的过程。 熟悉项目程度只和 context 长度正相关
    doraemonki
        4
    doraemonki  
    OP
       19 小时 0 分钟前
    @fulln #2 其实还有很多细节的最佳时实践,碍于篇幅与主题内容我没有分享出来。比如在每次小任务后 code review 非常重要,比如不断让 AI 质疑架构不合理的地方等等,我觉得 Design for Testability 算是一个核心哲学所以重点讲了。
    doraemonki
        5
    doraemonki  
    OP
       18 小时 56 分钟前   ❤️ 1
    @hihanley 还有一点我觉得很重要的就是,不断让 AI 质疑架构或代码不合理的地方,强调 No Backward Compatibility 主动重构(个人项目)
    56way
        6
    56way  
       18 小时 46 分钟前
    我一般还会加上接口格式统一之类的,AI 写着写着接口规范就乱掉了。。。
    2han9wen71an
        7
    2han9wen71an  
       18 小时 3 分钟前
    是怎么让 claude 写测试用例的?我的每次单测跑不过,他就把测试用例注释掉了,或者直接把业务逻辑给我改了
    doraemonki
        8
    doraemonki  
    OP
       17 小时 50 分钟前   ❤️ 2
    @2han9wen71an 把任务拆分的足够小。TDD 测试驱动开发可能不太合适,AI 注意力有限,所以得先实现逻辑再让添加全面的单元测试,并通过 CI 流水线检查才算完成任务。

    我的提示词:
    [ENGINEERING_GUIDELINES.md]( https://github.com/doraemonkeys/sloc-guard/blob/master/docs/ENGINEERING_GUIDELINES.md)

    [SKILL.md]( https://github.com/doraemonkeys/sloc-guard/blob/master/.claude/skills/task-implementation/SKILL.md)
    wukongkong
        9
    wukongkong  
       3 小时 23 分钟前
    所以这相当于前端的 eslint ? 昨天试了下以这个思路去写 eslint 规则,让 ai 每次都编译,感觉不错
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2297 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 02:28 · PVG 10:28 · LAX 18:28 · JFK 21:28
    ♥ Do have faith in what you're doing.