需求在脑子里清清楚楚,手指放在键盘上一个字打不出来。
工具装好了,界面也摸熟了。你打开编辑器,光标一闪一闪,然后——卡住了。你很清楚想要什么:”给它一个手机号,它把中间四位变成星号。” 这句话三秒能说清。
问题是,这句话怎么变成代码?
模块四进入”代码生成”。我们不从”做网站”这种大目标开始,而是从最小的那块积木——函数开始。
这一篇你会得到三样:看懂函数是什么、学会怎么向 AI 描述一个函数、拿到前后端各一个能跑起来的真实例子。
一、函数是什么?就是一台榨汁机
一个函数 = 一台机器。 你往里投入原料,它按固定规则加工,吐出成品。
- 榨汁机:投进苹果 → 打碎过滤 → 出苹果汁
- 打码函数:投进
13812345678→ 遮住中间四位 → 出138****5678 - 计价函数:投进单价和数量 → 相乘再打折 → 出应付金额
编程里那些吓人的名词,剥开都是这个结构:
| 编程叫法 | 人话 | 榨汁机对应 |
|---|---|---|
| 参数(输入) | 你给它什么 | 苹果 |
| 函数体(逻辑) | 它怎么加工 | 打碎、过滤 |
| 返回值(输出) | 它给你什么 | 一杯果汁 |
| 函数名 | 这台机器叫啥 | “苹果榨汁机” |
记住这四样,你就已经会”描述”函数了。 而向 AI 描述清楚,就是让 AI 写对代码的全部秘诀。

二、为什么第一课要学”写函数”,而不是”做个网站”
很多人上手 AI 编程,第一句就是”帮我做一个电商网站”。AI 唰唰给两百行,复制进去报错,然后彻底放弃。
从函数开始,有三个不可替代的好处:
- 它足够小,你能看懂全貌。 一个函数通常十行以内,AI 给什么你都能通读一遍。
- 它好验证。 输入 A 是不是出了 B?一试就知道对不对。
- 它是砖头。 真实项目就是几十上百个函数拼起来的。你会描述一个函数,就是会描述一百个。
一句话:先学会说清一件事,再去说清一百件事。
三、向 AI 描述函数的”四要素”
描述一个函数,只需要说清四件事:
- 它叫什么 / 干什么用——不用起英文名,用中文说用途就行。
- 输入是什么——说清类型和格式,这是新手最易漏的。✅”输入一个手机号字符串,11 位纯数字,如
13812345678” - 输出是什么——给一个具体例子比任何形容词都管用。✅”输出还是字符串,中间四位变星号,如
138****5678” - 特殊情况怎么办——这一条是分水岭。 加了它能直接上线;不加,上线三天就出事故。✅”空值、非 11 位、含字母,就原样返回,不报错”
把四条拼起来,就是一个专业级需求。

四、实操一:前端函数(手机号打码)
前端就是”用户看得见的那一层“——网页上的按钮、列表、输入框。
把四要素写成一段话发给 AI(完整提示词见文末模板)。它大概回你这样一段:
function maskPhone(phone) {
if (!phone || typeof phone !== 'string') return phone; // 没传或不是字符串,原样返回
if (!/^\d{11}$/.test(phone)) return phone; // 不是11位纯数字,原样返回
return phone.slice(0, 3) + '****' + phone.slice(7); // 前3位+四个星+后4位
}
别怕那行像乱码的 /^\d{11}$/。 它叫正则,意思是”必须是 11 个数字”。你不需要会写,只需知道它在做什么——这正是中文注释的意义。
验证(别省): 浏览器按 F12,切到 Console,把函数和测试例子一起粘进去回车。五行输出跟”期望”一致,恭喜,第一个函数跑通了。
五、实操二:后端函数(订单金额计算)
后端是”用户看不见、背后算账的那一层“。前端算错页面难看,后端算错是真赔钱,所以后端对边界要求高得多。
用同样四要素:输入单价、数量、会员等级;输出实付金额;规则普通 95 折、金卡 9 折、四舍五入;边界”单价或数量 ≤0 返回 0,不认识的等级按普通处理”。AI 会给你:
def calc_payment(price, quantity, member_level):
if price <= 0 or quantity <= 0: return 0
total = price * quantity
discount = {'普通': 1.0, '银卡': 0.95, '金卡': 0.9}.get(member_level, 1.0)
return round(total * discount, 2)
注意”认不出的等级默认不打折”——这就是你在需求里写了边界才有的东西。不写这条,用户传个”钻石卡”,程序当场崩溃。

六、怎么确认 AI 没有骗你?三招验证法
AI 写代码有个特点:它永远很自信,哪怕写错了。 验证是你必须自己做的事。
- 让 AI 自己出考题:”请你扮演测试工程师,列 8 个用例(正常/边界/异常),每条写清输入输出和为什么测。” 写代码和测代码是两种思维,换个身份它会挑自己的毛病。
- 拿三个”魔鬼输入”去试:空值、零和负数、超大超长。十个新手函数,八个死在这三个上。
- 让 AI 用大白话复述:”逐句解释这段代码,最后告诉我什么情况下会出问题?” 最后那句是关键,AI 通常老实交代短板。
七、AI 写函数的四个高频坑
- 坑1:没说的它自己猜。 你说”算折扣”没说保留几位,它给你
89.100000000001。解法:数字精度、时间格式、排序规则,一律写进需求。 - 坑2:用了你环境没有的库。 一跑报”找不到模块”。解法:需求加”只用语言自带功能,不引第三方库”。
- 坑3:一次要它写太多。 “注册、登录、找回密码”给你三段,两段有 bug 你还不知道。解法:一次只要一个函数,跑通再要下一个。
- 坑4:改需求它重写整段。 你说”折扣改 88 折”,它改了函数名,你原来调用的地方全崩。解法:明确”只改这一行,其他保持原样,告诉我改了哪几行”。

八、从一个函数,到一串函数
会写一个之后,下一步不是写更大的函数,而是写更多小函数串起来。 比如”用户下单”拆成:validateOrder 检查参数、calcPayment 算金额(你刚写的)、deductStock 扣库存、createOrderRecord 生成订单。
每个独立要、独立测、独立跑通。 这就是专业做法,对你的唯一要求是:会用四要素描述需求。 你已经会了。
提示词模板盒子(可直接复制)
模板 1|写一个函数(万能四要素版)
我完全不会写代码,请用【JavaScript / Python / 其他】帮我写一个函数。
用途:【干什么用,用在什么场景】
输入:【几个参数,类型、格式,给具体例子】
输出:【返回什么类型,给一个具体例子】
处理规则:【中间怎么算,分条列】
边界情况:【空值、异常值、认不出的值分别怎么办】
要求:
1. 每一段加中文注释
2. 只用语言自带功能,不引入任何第三方库
3. 给 5 个可复制的测试例子,含边界情况
4. 用最直白的写法,不要炫技
模板 2|验证代码靠不靠谱
针对上面这个函数,做两件事:
1. 扮演测试工程师,列 8 个测试用例(正常2/边界3/异常3),每条写清输入、期望输出、为什么测;
2. 用一句大白话解释这段代码,最后告诉我:什么情况下会出问题?怎么防?
模板 3|精准改一处,不许重写
对上面这个函数做一处修改:【具体说明改什么】
严格要求:
1. 只改这一处,其他代码一模一样
2. 不要改函数名、参数名、代码顺序
3. 改完告诉我:改了第几行,原来是什么,现在是什么
4. 若改动影响别处,先提醒我,别擅自动手
速查:四要素填空
| 要素 | 该写什么 | 反面教材 |
|---|---|---|
| 用途 | 干什么 + 用在哪 | “处理一下数据” |
| 输入 | 参数、类型、格式、举例 | “传个值进去” |
| 输出 | 类型 + 一个例子 | “返回结果” |
| 边界 | 空值/异常/未知值怎么办 | (空着) |
速查:三个魔鬼输入
| 类型 | 试什么 | 常见崩法 |
|---|---|---|
| 空值 | 不传、空串、null | 直接崩溃 |
| 零和负数 | 数量0、价格-100 | 算出负数 |
| 超长超大 | 999999、千字串 | 卡死溢出 |
下篇预告
函数写完了,它躺在编辑器里你看不见。下一篇我们用 AI 生成一个网页,双击就能在浏览器打开、能发朋友看——那是整个系列第一次你能把成果发出去。