动机

  如果你发现做一件事可以有更清晰的方式,就应该以较清晰的方式取代复杂的方式。有时候你想修改原先的算法,让它去做一件与原先略有差异的事。这时候你也可以先把原先的算法替换成一个较易修改的算法,这样后续的修改会轻松很多。

  替换一个巨大复杂的算法是非常困难的,只有将它分解为叫简单的小型函数,然后你才能很有把握的进行算法替换工作。

做法

  • 准备好另一个(替换用)算法。

范例

修改前:

function foundPerson (people) {
  for (let i = 0; i < people.length; i++) {
    if (people[i] === 'Don') {
      return 'Don'
    }
    if (people[i] === 'John') {
      return 'John'
    }
    if (people[i] === 'Kent') {
      return 'Kent'
    }
  }
  return ''
}

修改后:

function foundPerson (people) {
  const candidates = new Set(['Don', 'John', 'Kent'])
  for (let i = 0; i < people.length; i++) {
    if (candidates.has(people[i])) return people[i]
  }
  return ''
}

声明

以上摘抄自《重构改善既有代码的设计》一书,代码部分由原来的java改写成javascript。目的仅为加深印象和理解,如有侵权请联系。