Typescript

为什么在 TypeScript 中需要将数字 20000 写成

2025-01-03  本文已影响0人  华山令狐冲

在 TypeScript 中,将数字 20000 写成 20_000,主要是为了提高代码的可读性和理解性。这种写法涉及 TypeScript 的数字分隔符(Numeric Separators)特性,通过在数字中添加下划线来增强可读性。

数字分隔符的背景与目的

对于人类而言,某些长的数字不容易一眼看出其实际值,例如数字 200001000000。虽然我们可以通过仔细数位数来判断这些数字,但这样可能会导致视觉疲劳和潜在的错误。而且,编程时往往需要阅读和理解他人编写的代码,当我们面对一段代码,其中包含多个复杂的数字时,快速准确地理解它们变得十分重要。

JavaScript 和 TypeScript 等现代编程语言引入了“数字分隔符”的概念,即允许在数字的千位、百万位等常用位置插入下划线 _ 来增强数字的可读性。这种写法并不会改变数字的实际值,只是为程序员提供了更直观的方式去理解它。

举例说明可读性的改善

数字分隔符的语法规则

在 TypeScript(以及 ECMAScript 2018 版本之后的 JavaScript)中,数字分隔符通过下划线 _ 来表示,语法是这样的:

let salary = 50_000; // 表示五万
let population = 1_200_000; // 表示一百二十万
let pi = 3.141_592; // 表示 π 值,精确到六位小数

可以看出,使用下划线将数字进行分割的规则是:

  1. 允许在数字的任何两个数字字符之间添加下划线。
  2. 下划线不能出现在数字的开头或末尾,也不能出现在小数点旁边。例如:
    • let incorrect1 = _1000; // 错误
    • let incorrect2 = 1000_; // 错误
    • let incorrect3 = 1_.000; // 错误

分隔符的目的是为了改善可读性,而不是提供任何的数学意义上的变化。换句话说,20_00020000 在计算机中是相同的数字,它们在底层存储和计算上完全一致。

为什么 20_000 比 20000 更好?

  1. 代码的可维护性

    • 假设你是一个团队的一部分,大家都在共同开发一个系统,其中有些代码需要在未来被更新或维护。很长的数字,如果没有明确的分隔符,可能会增加出错的风险。
    • 例如,一个函数中使用了多个大数字 200003000005000000,如果没有分隔符,后续的开发者必须仔细地数位数才能确定每个数字的意义,这可能会降低效率,甚至会出现误解。
    • 而通过将数字写作 20_000300_0005_000_000,开发者可以更快地理解这些数字的具体大小,节省时间的同时也减少出错的可能性。
  2. 减少阅读错误

    • 当数字足够大时,如 123456789,人眼很难一眼看出它的准确数值。这个时候,数字分隔符起到了类似于标点符号的作用,帮助读者将数字分成易于识别的部分。
    • 123_456_789 显然比 123456789 更易于理解,前者可以清楚地看出其值为一亿二千三百四十五万六千七百八十九,而后者则需要更多的注意力来数清位数。
  3. 一目了然的金额表示

    • 在财务或者统计应用中,金额往往是以万、百万、甚至亿为单位的。比如,某企业的年收入是 20000000 元,这个数字在没有下划线的情况下容易被误读,而使用 20_000_000 表示显然可以更直观地体现其具体金额。
    • 同样地,银行系统、金融计算、销售数据等场景中,大量涉及金额的数字,通过数字分隔符进行书写能有效降低歧义和错误的风险。
  4. 数字逻辑分块

    • 编写代码时,我们经常使用如 IP 地址、信用卡号、电话号码等具有特定分段的数字。下划线可以帮助将这些分段呈现得更加明确。例如:
      let creditCardNumber = 1234_5678_9012_3456; // 清晰地分为四组
      let phoneNumber = 123_456_7890; // 三段分组的电话号码
      
    • 通过分段的方式,不仅使得代码更易于理解,同时也符合我们在生活中看到这些数字的方式,减少了心智负担。

使用数字分隔符的最佳实践

示例:没有数字分隔符的常见问题

假设你在一个代码库中看到了如下代码片段:

function calculateTotalPrice(pricePerItem: number, quantity: number): number {
    return pricePerItem * quantity + 20000;
}

这里的 20000 到底代表什么?是运费?是折扣后的额外费用?抑或是某种税款?我们无法从字面上直观地判断其含义,且需要去翻阅文档或相关注释来确定。如果将其改为 20_000

function calculateTotalPrice(pricePerItem: number, quantity: number): number {
    return pricePerItem * quantity + 20_000; // 运费
}

现在,数字的结构变得更加清晰,开发者更容易理解整个函数的逻辑,尤其是当这些数字出现在复杂的表达式中时,这种改善尤为重要。

综述与总结

在 TypeScript 中使用数字分隔符将 20000 写成 20_000,实际上是为了让代码的可读性和可维护性得到了极大提高。对于大多数开发者而言,代码的阅读量远大于编写量,因此提高代码可读性的任何做法,都是值得推崇的。

数字分隔符的引入帮助我们将冗长的数字进行逻辑分块,从而减少视觉疲劳,降低理解和维护代码时出错的风险。对于团队协作或后续代码维护,数字分隔符尤其有用,它帮助开发人员在快速浏览代码时能够准确无误地理解数值,避免了因数字位数过多而造成的误解或错误。

上一篇 下一篇

猜你喜欢

热点阅读