# 6-MutableData 可变数据

# 函数式编程的理念

TIP

  • 函数式编程完全建立在数据永不变的理念上。
  • 如果要更新一个数据结构,那就返回一份新的数据副本,旧的数据依然保持不变。
  • 这也是我个人一直坚持的一种理念,但是有时候我们也难免有直接的更新操作在函数中。

WARNING

  • 一句话,尽量避免
// bad codes
function _getVariableNameData() {
  this.data = 1
}

// nice codes
function _getVariableNameData() {
  return 1
}

function _setVariableData(data) {
  this.data = data
}

const tempData = _getVariableNameData()
_setVariableData(tempData)

# 定义

TIP

这里指的可变数据:能从其他地方计算出来的可变数据

# 方案

  • 拆分变量

    • 将其拆分成不同用途的变量,从而避免危险的更新操作
  • 移动语句与提炼函数

    • 尽量把逻辑从更新操作的代码之中搬移出来,将没有副作用的代码与执行数据更新操作的代码分开。
  • 分离

    • 将查询参数与修改函数参数分离,确保调用者不会调用到有副作用的代码,除非真的要进行更新数据。
  • 移除设值函数

最后更新: 2/16/2021, 2:41:46 PM