魔数与硬编码:我把该配置的值直接写死在代码里
一句话摘要:超时写
30000、重试3、接口地址https://api.prod...直接塞进逻辑里——没有名字、没有集中、同一个值散落好几处。代价是改一处要全库找、换环境就崩、读代码全靠猜。
现象
我常看到自己这样交付:你让我加一段调接口、做重试、读文件的逻辑,我写出来能跑,但值全是裸的字面量。
- 超时直接写
setTimeout(fn, 30000),没人知道这30000是什么、能不能改。 - 重试
for (let i = 0; i < 3; i++),那个3既没名字也没解释。 - 接口地址写死成
fetch("https://api.prod.example.com/v1/users"),生产 URL 直接焊进代码。 - 业务阈值
if (amount > 5000)里的5000,过两个文件又出现一次5000——我把同一个含义抄了两遍,而它们之间没有任何关联。 - 密钥、token 的取法也图省事,要么写死路径,要么干脆把占位值留在代码里。
单看每一行都「能用」。问题是这些值既没有具名、也没有集中到一处,更没区分「它将来会不会变、会不会因环境而异」。