目标:
- 理解什么“硬编码”
- 理解“硬编码”的弊端
- 知道该如何优化“硬编码”所带来的问题
参考资料:
- 链接:wiki 硬编码
什么是硬编码?
- 硬编码是一种 编程术语,指的是将具体的值直接写入源代码中 —— 俗称“写死”。
- 硬编码通常被认定为一种 反模式 或不完美的实现。
- 硬编码并非一无是处,因某些封装需要或软件本身的保护措施,有时是必要的手段。
硬编码的两点弊端
- 可读性差
- 可维护性差
demo
我们可以创建一个示例,用来描述一个园的面积计算函数。在第一种情况下,我们会直接在函数中硬编码圆周率 π 的值。在第二种情况下,我们会将 π 值设为一个全局常量,以便在函数和其他地方复用。
function calculateCircleArea(radius) {
return radius * radius * 3.14159;
}
console.log(calculateCircleArea(5)); // 输出:78.53975
在上述代码中,我们直接在函数内部硬编码了圆周率 π 的值(3.14159),这存在两个问题:
- 一旦我们需要改变 π 的精度或者对其有其他修改,我们需要找到并改变代码中所有用到 π 的地方,这样的工作量大且容易出错。
- 如果其他函数或模块也需要用到 π,那么它们无法直接复用这个值,导致代码重复。
const PI = 3.14159;
function calculateCircleArea(radius) {
return radius * radius * PI;
}
console.log(calculateCircleArea(5)); // 输出:78.53975
在这种情况下,我们将 π 定义为全局常量,函数直接使用这个常量。这样,当 π 的值需要修改时,我们只需要修改一处。同时,如果其他函数或模块也需要 π,它们可以直接使用这个常量,避免了代码重复。
第二种写法避免了硬编码的问题,使得程序的可读性、可维护性更好。