写代码时,谁没用过临时变量?算个中间值、存个临时结果,随手就是 temp、a、i1 这类名字。可等你三天后再打开这段代码,大概率得愣住:这个 temp 到底存的是用户ID还是订单状态?
别让“临时”变成“永久困惑”
临时变量不等于可以随便命名。虽然它生命周期短,但它的作用是连接逻辑的“桥梁”。一个模糊的名字会让别人(甚至是你自己)读代码时卡壳。比如:
let temp = userInfo.split('-');
let result = temp[1];
这段代码里 temp 是什么?字符串分割后的数组?但具体哪部分有用?换成更有意义的名字:
let parts = userInfo.split('-');
let userName = parts[1];
一眼就知道 parts 是拆分结果,userName 是目标数据,逻辑清晰多了。
用场景代替通用词
与其叫 temp,不如结合上下文起名。比如你要计算折扣价:
let temp = price * 0.8;
finalPrice = temp + shipping;
改成:
let discountedPrice = price * 0.8;
finalPrice = discountedPrice + shipping;
名字直接表达了意图,别人不需要去猜乘0.8是为了打折还是清仓甩卖。
短不代表要缩写到看不懂
有人为了省几个字母,把临时变量写成 u、res、val。可这些缩写在不同上下文中含义完全不同。与其节省敲键盘的时间,不如多花两秒写清楚。
比如从接口取数据,别写:
let res = await fetchUser();
let name = res.data.name;
换成:
let userData = await fetchUser();
let name = userData.data.name;
名字和用途对上了,阅读体验立马提升。
循环里的临时变量也别糊弄
遍历数组时,很多人习惯用 i、j、k。单层循环还行,嵌套一深就乱套。比如:
for (let i = 0; i < users.length; i++) {
for (let j = 0; j < orders.length; j++) {
if (users[i].id === orders[j].userId) {
// 处理逻辑
}
}
}
改成:
for (let userIndex = 0; userIndex < users.length; userIndex++) {
for (let orderIndex = 0; orderIndex < orders.length; orderIndex++) {
if (users[userIndex].id === orders[orderIndex].userId) {
// 处理逻辑
}
}
}
或者更进一步,直接用 for...of 避免索引:
for (let user of users) {
for (let order of orders) {
if (user.id === order.userId) {
// 处理逻辑
}
}
}
变量名清晰了,代码也更安全。
小改动,大回报
给临时变量起好名字,不是追求完美主义,而是减少认知负担。每次命名时多想一秒,后面调试、协作、维护时能省下几分钟甚至几小时。代码是写给人看的,运行只是顺便的事。