Javascript 代码气味-将布尔控制参数传递给函数

Javascript 代码气味-将布尔控制参数传递给函数,javascript,dom,refactoring,readability,Javascript,Dom,Refactoring,Readability,下面是代码片段,有一点我不喜欢: function insert(el, child, before){ if ( before ) { el.insertBefore(child, el.childNodes[0]); } else { el.appendChild(child); } } 为什么不改为使用两种不同的方法,如insertBefore和insertAfter?这种方法和其他方法的优缺点是什么 更新: 我很好地解释了我想要的内容。此函数的全部目的是避免

下面是代码片段,有一点我不喜欢:

function insert(el, child, before){
  if ( before ) {
    el.insertBefore(child, el.childNodes[0]);
  } else {
    el.appendChild(child);
  }
}
为什么不改为使用两种不同的方法,如
insertBefore
insertAfter
?这种方法和其他方法的优缺点是什么

更新:


我很好地解释了我想要的内容。

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

if (something) {
    foo.insertBefore(bar, foo.childNodes[0]));
} else {
    foo.appendChild(bar);
}
您可以将它们简化为:

insert(foo, bar, something);
使用这两种方法,它将成为:

if (something) {
    insertBefore(foo, bar);
} else {
    insertAfter(foo, bar);
}

这并不比原来的好多少。

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

if (something) {
    foo.insertBefore(bar, foo.childNodes[0]));
} else {
    foo.appendChild(bar);
}
您可以将它们简化为:

insert(foo, bar, something);
使用这两种方法,它将成为:

if (something) {
    insertBefore(foo, bar);
} else {
    insertAfter(foo, bar);
}

这并不比原来的好多少。

这个问题的目的是什么?你有一个你不喜欢的代码??改变它@Amit这个问题的目的是编写更好的代码。更好理解和测试的定义。我认为问题和标签正确地阐明了意图。这个功能的目的是什么?例如,为什么不直接使用appendChild呢?这是某种自由的一部分吗?@Thomas是的,这是一种公共自由。这个问题的目的是什么?你有一个你不喜欢的代码??改变它@Amit这个问题的目的是编写更好的代码。更好理解和测试的定义。我认为问题和标签正确地阐明了意图。这个功能的目的是什么?例如,为什么不直接使用appendChild呢?这是某个库的一部分吗?@Thomas是的,它是一个公共库。但它要求客户端代码在每次调用该方法时都要记住传递该标志,此外,我会知道我是否必须在客户端代码中插入before或after,而不需要在代码中分散if条件。只有在需要动态确定选择时,您才会使用此方法。这就像为什么jQuery既有
隐藏
显示
,又有
切换
。动态时使用
切换
,已知时使用
隐藏/显示
。但每次调用该方法时,客户端代码都需要记住传递该标志,此外,我会知道我是否必须在客户端代码中插入before或after,而不需要在代码中分散if条件。只有在需要动态确定选择时,您才会使用此方法。这就像为什么jQuery既有
隐藏
显示
,又有
切换
。动态时使用
切换
,先验时使用
隐藏/显示