代码气味 - 将boolean控制参数传递给函数

时间:2016-05-02 18:27:23

标签: javascript dom refactoring readability

下面是代码片段,有些内容我不喜欢:

function insert(el, child, before){
  if ( before ) {
    el.insertBefore(child, el.childNodes[0]);
  } else {
    el.appendChild(child);
  }
}

为什么不使用insertBeforeinsertAfter两种不同的方法呢?这种方法和其他方法的优点和缺点是什么?

更新

我得到了这个很好的article解释我想要的东西。

1 个答案:

答案 0 :(得分:2)

此函数的全部目的是避免在调用函数的所有位置放置语句。所以如果你有很多地方看起来像:

if

您可以将所有这些简化为:

if (something) {
    foo.insertBefore(bar, foo.childNodes[0]));
} else {
    foo.appendChild(bar);
}

使用您的两种方法,它将成为:

insert(foo, bar, something);

并不比原版好得多。