代码味道 - 将布尔控制参数传递给函数
Code smell - passing boolean control argument to function
下面是代码片段,有一点我不喜欢:
function insert(el, child, before){
if ( before ) {
el.insertBefore(child, el.childNodes[0]);
} else {
el.appendChild(child);
}
}
为什么不使用 insertBefore
和 insertAfter
等两种独立的方法呢?这种方法和其他方法的优缺点是什么?
更新:
我很好article 解释了我想要的东西。
此函数的全部目的是避免在调用该函数的所有地方都放置 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);
}
比原来的好不了多少。
下面是代码片段,有一点我不喜欢:
function insert(el, child, before){
if ( before ) {
el.insertBefore(child, el.childNodes[0]);
} else {
el.appendChild(child);
}
}
为什么不使用 insertBefore
和 insertAfter
等两种独立的方法呢?这种方法和其他方法的优缺点是什么?
更新:
我很好article 解释了我想要的东西。
此函数的全部目的是避免在调用该函数的所有地方都放置 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);
}
比原来的好不了多少。