我試圖重構一個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
真相表對我來說似乎不對,你能檢查嗎? –