if statement - if and else if do the same thing -


i'm trying refactor if-else chain doesn't particularly good. common sense telling me should able call method once can't figure out elegant way it. have is:

if(condition1)   method1; else if(condition2)   method1; 

which looks hideous. there's repeat code! best can come is:

if(condition1 || (!condition1 && condition2))   method1; 

but looks bad, since i'm negating condition1 after or, seems unnecessary...

i made truth table this:

 c1| c2| r  0 | 0 | 0  0 | 1 | 1  1 | 0 | 1  1 | 1 | 1 

and in case interested, real-life problem i'm having got 2 intances of fancytree in javascript , want set rules transferring nodes between them. tree can transfer lone nodes tree b, while tree b can reorder freely, put on tree b's dragdrop event:

if(data.othernode.tree === node.tree){    data.othernode.moveto(node, data.hitmode); } else if(!data.othernode.haschildren()){   data.othernode.moveto(node, data.hitmode);               } 

you can simplify more - if first condition true, method should invoked regardless of second condition. !condition1 in refactored code redundant. instead, have:

if(condition1 || condition2)   method1; 

in modern programming languages if condition short circuit. means when first condition evaluated true, second condition won't evaluated.


Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -