
有没有人会感觉 vibe coding 开发出来的东西代码一多就变成了屎山,自己失去了对项目的掌控感,经常改了一个地方其地方就爆炸。
我想分享一个我的 vibe coding 最佳实践: 极致严格的约束+90%的测试覆盖率。
给项目开启最严格的 lint
比如 Go 的 golangci-lint ,Rust 的 Cargo clippy 。以前人因为偷懒老是忽略编译器警告,但是 AI 时代改起来真的很快,而且帮助很大。
强制 90%的测试覆盖率(Design for Testability)
让 AI 生成的代码设计全部以提高测试覆盖率为主要目标,后期加需求再也不担心破坏已实现功能了。真的爽的一批啊,体验过就知道什么叫做稳稳地幸福。
强制代码行数检查
从我强制要求极高的测试覆盖率,并开启所有合理的 lint 检查之后,代码质量肉眼可见的提升了。但我逐渐发现还缺少一个工具用来限制代码行数,AI 老是喜欢在一个代码文件堆屎山啊!开源社区逛了一圈发现还没有类似的工具,于是自己用 Rust 搞了个sloc-guard。
文件命名风格检查
个人不太喜欢 common,helper,这种毫无意义的文件名,以前懒还能忍,自从代码基本都让 AI 写之后,索性也是直接上了强制约束。
这一套搞下来,我觉得基本实现了全自动防止 AI 堆屎山的效果。我相信 AI 写的代码可读性已经超过大多数人了,AI 也不会偷懒,该有的注释也都有,写出来的代码可以用赏心悦目来形容了哈哈。
Talk is cheap, show me the code.
sloc-guard,这个 Rust 项目全程实践上述做法,原汤化原食,5 万行代码勉强算是个中型项目吧,90%测试覆盖率,clippy 严格模式 0 warn ,没一个文件超过 600 行,我保证这个项目的规范程度绝对达到了非常高的水平,不信来看看嘿嘿
1 hihanley 3 小时 36 分钟前 有用,还有什么约束吗? |
2 fulln 3 小时 5 分钟前 其实代码生成的另外一个问题是: 代码的逻辑重复,尤其是在多表关联或者多模块关联的时候 , 原来的模块已经生成好的代码不用, 反而去重新定义一遍。 |
3 fulln 3 小时 4 分钟前 非常像初级开发或者刚接触项目的开发, 但是 AI 永远不会有熟悉项目的过程。 熟悉项目程度只和 context 长度正相关 |
4 doraemonki OP @fulln #2 其实还有很多细节的最佳时实践,碍于篇幅与主题内容我没有分享出来。比如在每次小任务后 code review 非常重要,比如不断让 AI 质疑架构不合理的地方等等,我觉得 Design for Testability 算是一个核心哲学所以重点讲了。 |
5 doraemonki OP @hihanley 还有一点我觉得很重要的就是,不断让 AI 质疑架构或代码不合理的地方,强调 No Backward Compatibility 主动重构(个人项目) |
6 56way 2 小时 34 分钟前 我一般还会加上接口格式统一之类的,AI 写着写着接口规范就乱掉了。。。 |
7 2han9wen71an 1 小时 52 分钟前 是怎么让 claude 写测试用例的?我的每次单测跑不过,他就把测试用例注释掉了,或者直接把业务逻辑给我改了 |
8 doraemonki OP @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) |