重构代码,以便子程序不知道被调用者

时间:2015-11-23 09:06:23

标签: architecture refactoring

我遇到了有关应用程序代码结构(可维护性)的一些问题。

我重构了代码,因此通用子程序可以处理常见任务以优化可重用性。 在这些子例程中,有时必须执行附加/其他操作,具体取决于被调用者传递给例程的参数。

然而,我一直认为软件设计的基本概念是不应该知道例程。被叫者;例程不应该知道它被称为哪个例程。我很清楚,我需要在我的应用程序中更高程度地实现这一点。

如何整合这两个看似相反的概念,以便我的代码变得更透明?

考虑下一个例子:

public void processA(){

    //specific code

    genericStuff(true);

    //specific code

}

public void processB(){

    //specific code

    genericStuff(false);

    //specific code

}

public void genericStuff (boolean doExtra){

    initializeStuff();
    doStuff();

    if(doExtra){
        doExtraStuff();
    }

    doEvenMoreStuff();
    finalizeStuff();    
}

如果我要分解通用例程的功能,那将是结果:

public void processA(){

    //specific code

    initializeStuff();
    doStuff();
    doExtraStuff();
    doEvenMoreStuff();
    finalizeStuff();

    //specific code

}

public void processB(){

    //specific code

    initializeStuff();
    doStuff();
    doEvenMoreStuff();
    finalizeStuff();

    //specific code

}

你最终会重复代码。当然,重构的目的不是集中于集中功能,从而最大限度地减少代码库?如果不再需要例程doEvenMoreStuff()怎么办?我必须检查那种情况下的所有调用例程。

0 个答案:

没有答案