整洁代码让AI帮你遵守SOLID原则(附提示词)
📌 摘要
很多开发者用AI生成了能跑的游戏代码,但打开文件一看:
-
2000行一个文件,函数名
func1、func2 -
全局变量满天飞,同样的合成公式写了3遍
-
改一个分数上限,崩掉五个模块
原因不是AI能力差,而是你没有给AI“整洁约束”。
本文教你一套提示词方法 + TypeScript工程规范,让AI自动写出符合命名规范、单一职责、低耦合、可测试的游戏代码。并附完整prompt模板和代码示例。
一、为什么整洁代码对小游戏尤其重要?
| 场景 | 脏代码代价 | 整洁代码收益 |
|---|---|---|
| 上线后要加新道具 | 改3处BUG,延期2天 | 只改1个配置文件,1小时完成 |
| 复制给跨平台复用 | 无法提取核心逻辑,重写80% | 直接复用core目录,0改动 |
| AI后续迭代 | 新需求破坏旧功能,无限循环 | AI能准确找到修改点,迭代速度翻倍 |
| 团队协作 | 没人敢动别人的代码 | 代码即文档,每个人都能维护 |
👉 一句话:整洁代码 = 低试错成本 + 高迭代速度 + AI友好。
二、AI输出屎山的3个根本原因
1️⃣ 提示词太宽泛
❌ “写一个合成游戏”
✅ 要求“分模块、纯函数、单一职责、无副作用”
2️⃣ 缺少具体规范约束
AI默认风格倾向于把所有逻辑塞进一个文件。你需要明确告知:命名规则、最大函数行数、禁止使用any、要求接口分离。
3️⃣ 没有迭代式重构
普通人一次生成完不再优化。正确方式:先让AI生成草稿 → 指出“这段太乱” → 让AI按规则重构。
三、实战:4步让AI写出整洁TS代码
第1步:在提示词中注入“代码整洁章程”
通用模板(可直接复制):
“你是一个精通TypeScript和整洁架构的高级工程师。在生成代码时必须遵守:
每个函数不超过10行,单一职责
禁止使用
any类型,所有变量明确类型复杂逻辑写成纯函数,无副作用
相关功能放在独立文件,导出清晰接口
变量名完整表意(比如
currentScore而不是s)添加必要的JSDoc注释,说明参数和返回值
重复代码抽象为函数或工具类
现在请实现:一个小游戏的核心合成规则...”
第2步:分文件、分模块生成
❌ “一次性写完整个游戏” → 容易产生循环依赖和超长文件。
✅ 分阶段让AI生成:
-
先产出一份目录结构
-
再让AI生成类型定义文件(
types.ts) -
生成纯函数工具库(
utils.ts) -
生成核心游戏类,引用上述模块
-
最后生成入口文件,组装所有模块
第3步:让AI自我审查和重构
提示词:
“上面这段代码违反了‘函数不超过10行’的原则,请将其拆分为更小的函数,并为每个函数添加JSDoc注释。同时检查是否有重复逻辑。”
AI会重新输出符合规范的新版本。
第4步:自动化lint与格式化配置
让AI生成.eslintrc.json和.prettierrc,然后运行:
bash
npx eslint src --fix npx prettier --write src
提示词:
“为TypeScript项目生成一套ESLint配置,要求强制:不允许使用
any、函数最多10行、复杂复杂度不超过5、文件名使用camelCase。同时生成VSCode工作区推荐设置。”
四、案例:用AI重构“屎山合成游戏”
❌ 原始AI脏代码(局部)
typescript
function a(b,c){let d=0;for(let e of b){if(e.type==c)d+=e.value}return d}
✅ 要求整洁后的AI输出
/**
* 计算指定类型道具的总价值
* @param items - 道具数组
* @param targetType - 要筛选的道具类型
* @returns 总价值
*/
function calculateTotalValueByType(items: GameItem[], targetType: ItemType): number {
return items
.filter(item => item.type === targetType)
.reduce((sum, item) => sum + item.value, 0);
}
重构前后对比
| 指标 | 脏代码 | 整洁代码 |
|---|---|---|
| 函数行数 | 3行(不可读) | 5行(自解释) |
| 类型安全 | any遍地 | 完整interface |
| 可测试性 | 无法单独测试 | 纯函数,输入输出明确 |
| AI后续修改 | 需要人解释逻辑 | AI直接理解函数签名 |
五、最实用的3条整洁金规则
🥇 规则1:让AI始终输出“纯函数优先”
纯函数 = 相同输入永远相同输出,无副作用。AI更容易生成、更容易测试、更容易组合。
提示词:“请用纯函数实现游戏计分逻辑,不要修改外部状态。”
🥈 规则2:用interface隔离“会变的东西”
凡是将来可能换平台、换规则、换UI的地方,都先让AI提取interface。
例子:IScoreStorage、IRewardGenerator。换实现时只需提供新的类。
🥉 规则3:禁止AI使用“魔法数字/字符串”
所有常量必须提取为命名常量或枚举。
提示词:“将所有数值配置(如升级所需经验、道具价格)提取到一个GameConfig.ts中。”
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)