我们有应用程序A作为主要应用程序。现在我们从App B开始构建使用App A功能子集的应用程序B。如何用许多if构造来重构一个大函数?
应用一个停留喜欢它,而应用B只使用的
一个子集所以我想重构功能没有或尽可能少dublication地和最大的可读性。
因此函数看起来像这样(它实际上较长,这是一个摘录):
class SomeClass {
Data prepareData() {
if (this.bothId==1 || this.appAid=2 /*or only relevant for appA*/) {
if(this.data==null) { /*appA*/
appAdoSmth(); /*appA*/
}
boolean merge=false; /*appA*/
if (this.data==null) { /*appA*/
merge=appAanalyze(data); /*appA*/
}
bothPrepare(merge);
} else if (bothIsRelevant()) {
if(appArelevant()) { /*appA*/
data=appAprepare(); /*appA*/
} else {
data=prepareBoth();
}
bothUpdateSomeValue();
}
}
那你怎么办呢?
使用Eclipse.It有一个选项来重构method.It会自动提出新的方法,包括它的参数。但是你必须考虑应该重构多少代码。 – vikiiii 2012-03-29 11:11:06