编程教学中常见的变量命名举例

在编程教学、伪代码演示或示例代码中,除了经典的 foobar,还有很多常用、含义相对中性的变量名可用。


一、经典延续型(Unix / 黑客文化)

这些和 foo / bar 同属一个“家族”,常见于手册和教材:

变量名 常见用途
baz 第三个示例变量(foo → bar → baz)
qux 第四个示例变量
quux 再往后继续编号
corge 同上
grault 同上
garply 同上

示例:

1
2
3
foo = 1
bar = 2
baz = foo + bar

二、占位 / 无意义型(强调“这不重要”)

适合用来说明“这里只是个占位符”:

变量名 含义/来源
spam Monty Python 梗,《Meaning of Life》里的 spam
eggs 同上
ham 同上
blah 口语“blah blah”
stuff “东西”
thing / things “某物”
dummy “哑变量”,只占位不用
temp / tmp 临时变量
placeholder 直白说明是占位
example / sample 示例数据

示例:

1
2
3
spam = get_data()
eggs = process(spam)
stuff = []

三、数学 / 算法风格

适合讲算法、数据结构、循环:

变量名 典型含义
x, y, z 坐标、未知数
i, j, k 循环索引
n, m 规模、数量
a, b, c 系数、参数
idx index 缩写
count 计数
sum 求和
avg 平均值
min, max 最小/最大值

示例:

1
2
for i in range(n):
    sum += arr[i]

四、面向对象 / 业务无关型

适合讲类、方法、接口设计:

变量名 说明
obj 某个对象
item 集合中的元素
value
key 字典键
result 结果
data 数据
input / output 输入 / 输出
user 用户
id 标识
name 名称
status 状态

示例:

1
2
3
User user = new User();
user.setId(1);
user.setName("Alice");

五、趣味 / 故事型(活跃课堂气氛)

适合做 demo、活跃气氛:

变量名 场景
alice, bob 密码学、通信双方
charlie 第三方
eve 窃听者(eavesdropper)
frodo, sam 《魔戒》
luke, leia 《星球大战》
apple, banana 水果示例
cat, dog 动物示例
red, blue 颜色
left, right 左右

示例(讲排序或交换):

1
2
3
left = 10
right = 20
left, right = right, left

六、按教学场景的选用建议

教学目的 推荐命名
讲语法、作用域 foo, bar, baz
讲算法、循环 i, j, n, sum
讲面向对象 obj, user, item
讲占位/无意义 spam, dummy, temp
活跃气氛 alice, bob, apple, banana

这是一个非常棒的问题,因为这些名字并非官方标准,而是计算机文化长期演化的产物。了解它们的来源,不仅能帮你更好地使用它们,还能在教学中增加很多有趣的“背景故事”。

七、命名来源

7.1、核心来源:FUBAR 与 MIT 黑客文化(Foo / Bar / Baz)

这是最重要的一条线,也是 foobar 成为“默认示例变量”的原因。

1. 军事俚语:FUBAR

  • 全称Fouled Up Beyond All Recognition(或更粗俗的版本:Fcked Up Beyond All Recognition)。
  • 含义:形容事情彻底搞砸了,乱七八糟。
  • 演变:在二战期间及之后,士兵和工程师常用这个词。后来在 1960-70 年代,MIT 人工智能实验室(MIT AI Lab) 的黑客们开始将其缩短、变形,创造了 FOO
  • BAR:则是对 FOO 的一种对仗补充,没有特别深的含义,主要是为了押韵和形成“foo bar”这个固定搭配。

2. 早期文档与 RFC

  • 1970 年代的 TMRC(Tech Model Railroad Club) 手册中大量使用了 Foo。
  • 1980 年代的 RFC(互联网请求评议草案) 文档中,经常用 foo.example.com 作为域名示例,进一步巩固了其地位。

3. 序列的形成

  • 为了演示多个变量,人们自然延伸出了序列:
    • foo (1st)
    • bar (2nd)
    • baz (3rd)
    • qux (4th)
    • ...(后面的 corge, grault 等来自 1980 年代的游戏 Adventure,被《The Jargon File》收录后流行起来)。

7.2、Python 社区:Monty Python(Spam / Eggs / Ham)

如果你教的是 Python,这绝对是最佳的背景知识。

  • 来源:英国喜剧团体 Monty Python(巨蟒剧团)。
  • 典故:Python 之父 Guido van Rossum 是该剧团的超级粉丝。他在发明 Python 时,特意将剧中的梗融入语言设计(比如“spam”指代无用的邮件,“eggs”作为占位符)。
  • 著名桥段:在《Monty Python's Flying Circus》的一集里,一家餐厅的菜单上所有的菜都包含 Spam(午餐肉罐头),服务员不断重复这个词,直到淹没所有对话。
  • 教学用法:在 Python 教程中,spam, eggs, ham 经常被用作函数参数或返回值,暗示“这只是个占位符,内容不重要”。

7.3、算法与数学传统(i / j / k / n)

这部分最严肃,源自数学界。

  • i, j, k:源自数学物理中的 虚数单位($i^2 = -1$)和张量分析中的下标约定。数学家习惯用 $i$ 表示第一个索引,$j$ 第二个,$k$ 第三个。
  • n, m:源自拉丁语 numerus(数字),用来表示数量或维度。
  • x, y, z:笛卡尔坐标系的传统。
  • 教学意义:当学生看到 i,他们潜意识里会知道“这是用来循环的”;看到 n,就知道“这是大小”。

7.4、密码学与网络安全(Alice / Bob / Eve)

当你讲到加密、HTTPS 或网络安全时,这套命名几乎是行业标准。

  • 来源:1978 年的一篇关于公钥密码学的论文中,作者 Ronald Rivest(RSA 算法的 R)为了形象化描述通信过程,引入了虚构人物。
  • 角色设定
    • Alice:通常想给 Bob 发消息的人(A 开头,排在字母表前面)。
    • Bob:接收消息的人。
    • Eve:窃听者(Eavesdropper)。
    • Mallory:恶意攻击者(Malicious)。
  • 教学用法alice.send(bob, message)user1.send(user2, data) 更有画面感。

7.5、流行文化与通用俚语(Blah / Dummy / Temp)

这些词来源于英语日常口语,用于降低认知负荷。

  • Dummy:在工程领域(不仅是软件),dummy 常指“模拟件”或“假件”(例如汽车碰撞测试中的 Dummy 假人)。
  • Temp / Tmp:Temporary(临时)的标准缩写,源自文件系统(如 /tmp 目录)。
  • Blah:拟声词,模仿无聊或含糊不清的声音(“blah blah blah”),表示内容不重要。
  • Thing / Stuff:英语中最通用的名词,用来指代“我不知道该怎么称呼它,但它就是那个东西”。

7.6、为什么会有这么多不同的体系?

总结一下,你可以这样告诉学生:

命名体系 起源 适用场景
foo / bar / baz 黑客文化与军事俚语 通用、底层、系统级示例
spam / eggs Monty Python 喜剧 Python 特有、初学者友好
i / n / x 数学与物理 算法、循环、计算
alice / bob 密码学论文 网络、安全、通信
apple / banana 儿童编程/直观教学 面向青少年或完全零基础
updatedupdated2026-06-022026-06-02