我试图重构一个if-else链看起来不太好。我的常识是告诉我,我应该只能打电话给我的方法一次,但我无法找到一个优雅的方式来做到这一点。目前我所拥有的是:如果和如果做同样的事
if(condition1)
do method1;
else if(condition2)
do method1;
看起来很丑陋。有重复的代码!我能想出的最好的是:
if(condition1 || (!condition1 && condition2))
do method1;
但是,这也很糟糕,因为我否定后condition1
或者,这似乎是不必要的...
我做了一个真值表如下:
c1| c2| r
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 1
而如果有人有兴趣,我在现实生活中的问题是,我得到了2个intances Fancytree的JavaScript和我想要一些规则设置为它们之间传输的节点。树中只能孤独的节点转移到树B,而B树可以自由重新排序本身,所以我把这个B树的dragDrop
事件:
if(data.otherNode.tree === node.tree){
data.otherNode.moveTo(node, data.hitMode);
}
else if(!data.otherNode.hasChildren()){
data.otherNode.moveTo(node, data.hitMode);
}
是否有一个否定第二个代码中的第一个条件的一点?如果condition1给出true,它将不会进入condition2,如果它返回false,它会去检查condition2。 – SEJBR
你在第一个代码片段中有一个简单的'OR'。 – dasblinkenlight
真相表对我来说似乎不对,你能检查吗? –