Question about eliminating conditional logic
Hello:
I'm having a hard time with implementing the notion of getting rid of
some "if then else" hell.
Given the following code sample:
if (i = 1)
{
method1(i);
}
else if (i = 2)
{
method2(i);
}
else if (i = 3)
{
method3(i);
}
else (i = 4)
{
method4(i);
}
I looked in Fowler's "Refactoring"... but replace conditional with
polymorphism doesn't seem to apply -- these aren't classes, they're
method calls. I looked at http://polygoncell.blogspot.com/2008/07/as-many-people-already-met-there-are.html
and all they did was replace the if block with switch. That doesn't
really eliminate the conditional now does it? I also read somewhere
else that I could use a map. The dilemma is my conditional calls
methods, not make assignments... so something like this really doesn't
work:
HashMap commandMap = new HashMap();
commandMap.put(1, method(1));
commandMap.put(2, method(2));
commandMap.put(3, method(3));
commandMap.put(4, method(4));
So while I'm NOT asking the forum to do my work for me, I am an
applied learner... and given a couple of the sources I've cited in my
post, I don't quite get getting rid of this conditional logic yet.
What is the best way to get rid of this smell?
Thanks!