if...else...的避免

if...else...一个例子:

if(var.equals("A")){   
            doA();   
        }else if(var.equals("B")){   
            doB();   
        }else if(var.equals("C")){   
            doC();   
        }else{   
            doD();   
        }  

 

这样的代码很常见,也非常平常,我们大家都写过。但正是这样平常才隐藏着我们永远没有注意的问题。问题就在于,如果某一天这个选项不再仅仅是ABC,而是增加了新的选项,会怎样呢?你也许会说,那没有关系,我把代码改改就行。然而事实上并非如此,在大型软件研发与维护中有一个原则,每次的变更尽量不要去修改原有的代码。如果我们重构一下,能保证不修改原有代码,仅仅增加新的代码就能应付选项的增加,这就增加了这段代码的可维护性和可变更性,提高了代码质量。那么,我们应当如何去做呢?

 

经过深入分析你会发现,这里存在一个对应关系,即A对应doA()B对应doB()...如果将doA()doB()doC()...与原有代码解耦,问题就解决了。如何解耦呢?设计一个接口X以及它的实现ABC...每个类都包含一个方法doX(),并且将doA()的代码放到A.doX()中,将doB()的代码放到B.doX()中...经过以上的重构,代码还是这些代码,效果却完全不一样了。我们只需要这样写:

X x = factory.getBean(var);
x.doX();

 

 

 

你可能感兴趣的:(C++,c,C#)