① 没分函数:一次要看 20 行
# 主流程里直接摊开来写
data = open('sales.txt').readlines()
records = []
for line in data:
if line.strip(): # 去空行
items = line.split(',')
if len(items) == 4: # 字段够
try:
amount = float(items[2])
records.append(amount)
except ValueError:
continue
total = 0
for v in records:
total += v
avg = total / len(records) if records else 0
print('average', avg)
② 分函数:调用点只剩 1 行
def read_sales(path): # 20 行细节被关进盒子
... # 同上 20 行
return records
avg = sum(read_sales('sales.txt')) / len(read_sales('sales.txt'))
print('average', avg)
1. 认知负荷 vs 执行负荷
2. 一张图看懂“压缩”
场景 | 大脑同时可见的代码量 | 需要立刻理解的变量/分支 | 典型 bug 定位时间 |
---|---|---|---|
20 行平铺 | 20 行 | 十几个变量 + 3 层嵌套 | 10 分钟 |
5 行调用 | 5 行 | 2 个符号(函数名+参数) | 30 秒 |
read_sales
函数即可;其余 20 行根本不进脑海。3. 一个现实例子:Linux 内核
schedule()
函数调用图超过千行,但主流程只有:schedule();
schedule()
内部;main.c
里,人类根本无法同时握持几千个变量状态,项目就维护不下去了。4. 小结一句话