我的原始代码是这样的
public String getToken() {
A a = new A();
B b = new B();
if (a.getMeow() == "2") {
if (a.getBow() == "3") {
return a.getBow();
} else if (a.getBow() == "4") {
return a.getMeow();
}
} else {
if (b.getBow() == "2") {
return b.getBow();
} else if (b.getBow() == "10") {
return b.getMeow();
}
}
String meow = a.getMeow;
meow += "2";
return meow;
}
现在,我想重构这段代码,这样if和else条件中的代码就在子函数中
public String getAString(A a) {
if (a.getBow() == "3") {
return a.getBow();
} else if (a.getBow() == "4") {
return a.getMeow();
}
return null;
}
public String getBString(B b) {
if (b.getBow() == "2") {
return b.getBow();
} else if (b.getBow() == "10") {
return b.getMeow();
}
return null
}
public String getToken() {
A a = new A();
B b = new B();
if (a.getMeow() == "2") {
return getAString(a);
} else {
return getBString(b);
}
String meow = a.getMeow();
meow += "2";
return meow;
}
但是重构后的代码中有一个问题,如果if (a.getBow() == 3)
中的所有条件都不在条件内,那么在原始代码中,它会跳过这些条件,并返回meow。但是在这段代码中,它将返回null。
看起来很简单,但我就是想不通。
1条答案
按热度按时间7cwmlq891#
您可以检查是否为null,并在两者都为null的情况下返回有效字符串: