最近用Cursor(Claude 3.7 Sonnet那个模型)写一个FastAPI项目,确实快,但一个月下来review代码时发现,它特别喜欢把逻辑塞进一个超长的service函数,然后疯狂用依赖注入,还老爱生成pydantic的嵌套model。我原本习惯写扁平一点的模块结构,现在感觉自己的代码风格被它悄悄改写了,有点别扭。
用Cursor写后端一个月,感觉代码风格被它带偏了,大家有这问题吗?
全部回复
共 25 条我倒觉得这不完全是坏事,Claude 3.7确实有它自己的“审美”,但关键是它把模式撞到你面前,逼着你思考为什么这么写。你提到超长service函数,我猜它可能是为了把业务编排和基础设施解耦,但如果你项目没那么复杂,这确实显得过度设计。我最近也遇到类似情况,后来干脆在系统提示里写清楚“保持扁平模块,单个函数不超过40行,少用嵌套model”,效果好很多。不过有一点我得提醒你,依赖注入这东西在FastAPI里其实是加分项,测试时mock特别方便,别一棍子打死。真正要警惕的是,你长期用AI写代码,会慢慢失去对“为什么这么设计”的敏感度,因为每次都是直接拿结果。我现在的做法是让它先给方案,我自己挑一个改,而不是全盘接受。你要是觉得别扭,可以试试每周抽一天纯手写,找找手感,不然真会被带偏到回不去。
同感,我最近也发现它特别喜欢依赖注入,明明几行能搞定的事非要绕一大圈。
我后来是写完立刻重构,不然堆一个月再看真是头大。
确实有同感,Claude写代码特别喜欢套一层层抽象,我上次让它改个查询逻辑,结果给我整出三个嵌套的service外加一堆type alias,看着都累。后来我学乖了,prompt里明确写“保持扁平结构,别搞依赖注入”,输出就正常多了。你也可以试试在项目里建个AGENTS.md或者规则文件,把风格约束写进去,它每次都会遵守。另外感觉这种“风格漂移”其实挺正常的,毕竟工具用久了总会互相影响,关键还是自己review的时候心里有数。
确实有同感,Claude 3.7写业务代码特别喜欢“高内聚”那一套,一个service恨不得把整个业务流程都包圆了。不过后来我想通了,这玩意儿本质是“平均风格”,它只是把社区里最常见的写法堆给你,未必适合你的项目。我现在会刻意在prompt里强调“保持扁平结构,不要过度抽象”,效果好了不少。另外你review的时候如果觉得别扭,干脆直接手动重构几个关键模块,让它下次照着你的风格来,AI适应人总比人适应AI容易。
这问题我太有同感了,用Cursor写了两周Java服务,回头一看代码全是它那套“模板感”极强的东西,什么Builder满天飞、每个方法都拆成Optional链式调用。最气的是它特别喜欢把简单逻辑包装成策略模式,搞得类数量翻了一倍,看着是“整洁”了,但实际维护起来反而要跳来跳去。我后来学乖了,每次让它生成前先在注释里明确写清楚“不要依赖注入,不要嵌套model,用平铺直叙的写法”,虽然还是会偶尔犯病,但至少能拉回一点自己的风格。其实我觉得这就像用惯了智能输入法,打字节奏会被潜移默化地改变,关键是你得定期回头审视自己的代码,把那些“AI味”重的地方手动重构掉。另外我还会刻意去读一些自己以前写的项目,找找那种手感的锚点,不然真容易越写越不像自己的。你有没有试过在项目里加个自定义的规则文件(比如针对linter或者代码模板)来约束它?我试了下,效果比单纯提示语好不少。