📌 摘要

很多开发者用AI生成了能跑的游戏代码,但打开文件一看:

  • 2000行一个文件,函数名func1func2

  • 全局变量满天飞,同样的合成公式写了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和整洁架构的高级工程师。在生成代码时必须遵守:

  1. 每个函数不超过10行,单一职责

  2. 禁止使用any类型,所有变量明确类型

  3. 复杂逻辑写成纯函数,无副作用

  4. 相关功能放在独立文件,导出清晰接口

  5. 变量名完整表意(比如currentScore而不是s

  6. 添加必要的JSDoc注释,说明参数和返回值

  7. 重复代码抽象为函数或工具类

现在请实现:一个小游戏的核心合成规则...”

第2步:分文件、分模块生成

❌ “一次性写完整个游戏” → 容易产生循环依赖和超长文件。
✅ 分阶段让AI生成

  1. 先产出一份目录结构

  2. 再让AI生成类型定义文件types.ts

  3. 生成纯函数工具库utils.ts

  4. 生成核心游戏类,引用上述模块

  5. 最后生成入口文件,组装所有模块

第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。
例子IScoreStorageIRewardGenerator。换实现时只需提供新的类。

🥉 规则3:禁止AI使用“魔法数字/字符串”

所有常量必须提取为命名常量或枚举。
提示词:“将所有数值配置(如升级所需经验、道具价格)提取到一个GameConfig.ts中。”

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐