目标:

  • 理解什么“硬编码”
  • 理解“硬编码”的弊端
  • 知道该如何优化“硬编码”所带来的问题

参考资料:

什么是硬编码?

  • 硬编码是一种 编程术语,指的是将具体的值直接写入源代码中 —— 俗称“写死”。
  • 硬编码通常被认定为一种 反模式 或不完美的实现。
  • 硬编码并非一无是处,因某些封装需要或软件本身的保护措施,有时是必要的手段。

硬编码的两点弊端

  • 可读性差
  • 可维护性差

demo

我们可以创建一个示例,用来描述一个园的面积计算函数。在第一种情况下,我们会直接在函数中硬编码圆周率 π 的值。在第二种情况下,我们会将 π 值设为一个全局常量,以便在函数和其他地方复用。

  1. function calculateCircleArea(radius) {
  2. return radius * radius * 3.14159;
  3. }
  4. console.log(calculateCircleArea(5)); // 输出:78.53975

在上述代码中,我们直接在函数内部硬编码了圆周率 π 的值(3.14159),这存在两个问题:

  • 一旦我们需要改变 π 的精度或者对其有其他修改,我们需要找到并改变代码中所有用到 π 的地方,这样的工作量大且容易出错。
  • 如果其他函数或模块也需要用到 π,那么它们无法直接复用这个值,导致代码重复。
  1. const PI = 3.14159;
  2. function calculateCircleArea(radius) {
  3. return radius * radius * PI;
  4. }
  5. console.log(calculateCircleArea(5)); // 输出:78.53975

在这种情况下,我们将 π 定义为全局常量,函数直接使用这个常量。这样,当 π 的值需要修改时,我们只需要修改一处。同时,如果其他函数或模块也需要 π,它们可以直接使用这个常量,避免了代码重复。

第二种写法避免了硬编码的问题,使得程序的可读性、可维护性更好。