java条件调用方法调用的字符串结果

时间:2018-04-09 12:56:12

标签: java android java-8

给出以下代码和替代方案,从可维护性和效率的角度来看会更好。我有现有的代码和2个替代品。经过大量的互联网淘汰,我还没有找到任何真正的答案。

现有的伪java:

Object obj = new ValidObject();
if (TextUtils.equals(obj.method(), CONSTANTS.option1){
} else if (TextUtils.equals(obj.method(), CONSTANTS.option2){
} else if (TextUtils.equals(obj.method(), CONSTANTS.option3){
} else if (TextUtils.equals(obj.method(), CONSTANTS.option4){
} else if (TextUtils.equals(compareString , CONSTANTS.option5) || TextUtils.equals(compareString , CONSTANTS.option6) ){
}

备选方案1(用局部变量替换重复的obj.method()):
这里的前提是重复函数调用会浪费CPU,但代价是存储String

Object obj = new ValidObject();
String compareString = obj.method();
if (TextUtils.equals(compareString , CONSTANTS.option1){
} else if (TextUtils.equals(compareString , CONSTANTS.option2){
} else if (TextUtils.equals(compareString , CONSTANTS.option3){
} else if (TextUtils.equals(compareString , CONSTANTS.option4){
} else if (TextUtils.equals(compareString , CONSTANTS.option5) || TextUtils.equals(compareString , CONSTANTS.option6) ){
}

备选方案2(如果使用开关替换,则丢失TextUtils.equals):
主要是为了可读性,但查找切换显然比

更快
switch(obj.method()){
    case CONSTANTS.option1:break;
    case CONSTANTS.option2:break;
    case CONSTANTS.option3:break;
    case CONSTANTS.option4:break;
    case CONSTANTS.option5:
    case CONSTANTS.option6:break;
}

这些最好的选择是什么,还有另一个我没想过的吗?

PS:
显然,我省略了代码,因为任何其他代码都不相关。我的代码中没有带有5个空体的if语句..

0 个答案:

没有答案