很多 Unity 老项目里都有这种模块。
你知道它该整理了。
也知道它写法不太现代,耦合偏重,测起来也麻烦。
但大家又都不太想先动。
原因很现实:
- 一动怕崩
- 没测试托底
- 边界不清楚
- 改完还要顺手救火
这种情况下,AI 一个挺实用的切入点,不是直接帮你大重构。
而是先帮你补那层最容易拖着不做的东西:测试壳子、依赖替身、接口草稿。
一、为什么老模块补测试这件事,特别适合 AI 先起版
因为它最烦的部分,经常不是测试思路本身。
而是这些机械工作:
- 把依赖抽成接口
- 写假对象或 stub
- 搭测试类结构
- 把 Arrange/Act/Assert 基本壳子补起来
这些东西人工当然能做。
但真的很容易拖。
AI 在这里最大的价值,就是先把这些“启动成本”压下去。
二、最不该做的事:把整个烂模块丢给 AI 说“帮我重构”
这通常不太靠谱。
因为老模块的问题往往不只是代码丑。
还包括:
- 业务约束多
- 历史兼容逻辑多
- 外部依赖复杂
- 生命周期和场景强耦合
这类东西一股脑丢给 AI,很容易产出一份看着整洁、实际上没法直接接项目的重构建议。
更好的切法,是先只让它做一小步。
三、我更推荐的提示词:先帮我把这个类变得“能测一点”
1 | 你是资深 Unity 客户端重构工程师。 |
这种问法会比“帮我优化一下”靠谱很多。
因为它限制了 AI 的发挥范围。
四、一个很典型的最小替身例子
比如原来某个模块直接这样拿资源和存档:
1 | public class RewardService |
这类代码很常见。
问题是几乎没法单测。
更适合的第一小步,通常不是大改,而是先拆依赖:
1 | public interface IRewardConfigProvider |
然后让 AI 再补一个最小测试壳子,通常就很快了。
五、第二轮提示词,适合让 AI 补测试替身和边界用例
1 | 请继续基于刚才的接口拆分,补这些内容: |
这类追问很有价值。
因为老模块最需要的,往往不是立刻重构得多漂亮。
而是先建立一点点“动它也不至于全靠心跳”的安全感。
六、最后一句
AI 在老 Unity 模块上的最佳用法,通常不是替你拍板重构方案。
而是先帮你把那层最容易拖着不做的测试准备工作铺出来:接口草稿、替身对象、测试壳子、边界样例。
这些东西一旦有了,后面人再动模块,心理负担会小很多。
项目里很多技术债,不是完全不会还。
只是一直缺一个足够低成本的第一步。