Nathan Nathan - 4 years ago 248
Java Question

How can I reduce the Cyclomatic Complexity of this?

I have a method that receives an Object and does something based on what type of object it detects:

void receive(Object object) {
if (object instanceof ObjectTypeA) {
doSomethingA();
}
else {
if (object instanceof ObjectTypeB) {
doSomethingB();
}
else {
if (object instanceof ObjectTypeC) {
doSomethingC();
}
else {
if (object instanceof ObjectTypeD) {
doSomethingD();
}
else {
// etc...
}
}
}
}
}


How can I reduce the Cyclomatic Complexity? I searched around but couldn't find anything too useful.

Answer Source

Can't you leverage an object-oriented approach for this? Create an interface that has the doSomething() method then create subclasses that implement the desired behavior? Then calling object.doSomething() would execute the appropriate behavior?

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download