vibe coding 最佳实践之"约束带来自由" - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
doraemonki
V2EX    程序员

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

  •  
  •   doraemonki 5 小时 50 分钟前 700 次点击

    有没有人会感觉 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 行,我保证这个项目的规范程度绝对达到了非常高的水平,不信来看看嘿嘿

    8 条回复    2025-12-31 16:37:30 +08:00
    hihanley
        1
    hihanley  
       3 小时 36 分钟前
    有用,还有什么约束吗?
    fulln
        2
    fulln  
       3 小时 5 分钟前
    其实代码生成的另外一个问题是: 代码的逻辑重复,尤其是在多表关联或者多模块关联的时候 , 原来的模块已经生成好的代码不用, 反而去重新定义一遍。
    fulln
        3
    fulln  
       3 小时 4 分钟前
    非常像初级开发或者刚接触项目的开发, 但是 AI 永远不会有熟悉项目的过程。 熟悉项目程度只和 context 长度正相关
    doraemonki
        4
    doraemonki  
    OP
       2 小时 48 分钟前
    @fulln #2 其实还有很多细节的最佳时实践,碍于篇幅与主题内容我没有分享出来。比如在每次小任务后 code review 非常重要,比如不断让 AI 质疑架构不合理的地方等等,我觉得 Design for Testability 算是一个核心哲学所以重点讲了。
    doraemonki
        5
    doraemonki  
    OP
       2 小时 44 分钟前   1
    @hihanley 还有一点我觉得很重要的就是,不断让 AI 质疑架构或代码不合理的地方,强调 No Backward Compatibility 主动重构(个人项目)
    56way
        6
    56way  
       2 小时 34 分钟前
    我一般还会加上接口格式统一之类的,AI 写着写着接口规范就乱掉了。。。
    2han9wen71an
        7
    2han9wen71an  
       1 小时 52 分钟前
    是怎么让 claude 写测试用例的?我的每次单测跑不过,他就把测试用例注释掉了,或者直接把业务逻辑给我改了
    doraemonki
        8
    doraemonki  
    OP
       1 小时 39 分钟前   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)
    关于     帮助文档     自助推广系统     博客     API     FAQ nbsp;   Solana     3176 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 10:16 PVG 18:16 LAX 02:16 JFK 05:16
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86