变量名命名临时变量:别让代码变“天书”

代码时,谁没用过临时变量?算个中间值、存个临时结果,随手就是 tempai1 这类名字。可等你三天后再打开这段代码,大概率得愣住:这个 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是为了打折还是清仓甩卖。

短不代表要缩写到看不懂

有人为了省几个字母,把临时变量写成 uresval。可这些缩写在不同上下文中含义完全不同。与其节省敲键盘的时间,不如多花两秒写清楚。

比如从接口取数据,别写:

let res = await fetchUser();
let name = res.data.name;

换成:

let userData = await fetchUser();
let name = userData.data.name;

名字和用途对上了,阅读体验立马提升。

循环里的临时变量也别糊弄

遍历数组时,很多人习惯用 ijk。单层循环还行,嵌套一深就乱套。比如:

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) {
      // 处理逻辑
    }
  }
}

变量名清晰了,代码也更安全。

小改动,大回报

给临时变量起好名字,不是追求完美主义,而是减少认知负担。每次命名时多想一秒,后面调试、协作、维护时能省下几分钟甚至几小时。代码是写给人看的,运行只是顺便的事。