java 的重叠 ifs 重构
overlapping ifs refactoring of java
我正在使用 java8。
我从示例中制作了以下代码。
我想重构这个,但我不知道怎么做。
有什么好的想法请告诉我。
添加说明:
编码有一些错误,所以我更正了。
String returnStr = "";
if(a != "" && b != "" && c != ""){
returnStr = "1";
}else{
if(a != "" && b != ""){
returnStr = "2";
}else if(a != "" && c != ""){
returnStr = "3";
}else if(b != "" && c != ""){
returnStr = "4";
}else{
if(a != ""){
returnStr = "5";
}else if(b != ""){
returnStr = "6";
}else if(c != ""){
returnStr = "7";
}else{
returnStr = "8";
}
}
}
return returnStr;
从“空”检查有效隐含的 3 位构造一个 int
:
int i = (a != "" ? 4 : 0) | (b != "" ? 2 : 0) | (c != "" ? 1 : 0);
(是的,您应该使用 equals
或 isEmpty()
,而不是 !=
。这不是重点。
这给出了 0 到 7 范围内的数字,包括端值。
构造一个8元素的列表或数组,其中数字是你想要的值return。
然后,使用上面的 i
到 select 来自 list/array 的元素:
return list.get(i); // or array[i]
你不需要所有这些else
,你可以像这样让它更简洁明了:
if(a != "" && b != "" && c != "") return 1;
if(a != "" && b != "") return 2;
if(a != "" && c != "") return 3;
if(b != "" && c != "") return 4;
if(a != "") return 5;
if(b != "") return 6;
if(c != "") return 7;
return 8;
我正在使用 java8。 我从示例中制作了以下代码。 我想重构这个,但我不知道怎么做。 有什么好的想法请告诉我。
添加说明: 编码有一些错误,所以我更正了。
String returnStr = "";
if(a != "" && b != "" && c != ""){
returnStr = "1";
}else{
if(a != "" && b != ""){
returnStr = "2";
}else if(a != "" && c != ""){
returnStr = "3";
}else if(b != "" && c != ""){
returnStr = "4";
}else{
if(a != ""){
returnStr = "5";
}else if(b != ""){
returnStr = "6";
}else if(c != ""){
returnStr = "7";
}else{
returnStr = "8";
}
}
}
return returnStr;
从“空”检查有效隐含的 3 位构造一个 int
:
int i = (a != "" ? 4 : 0) | (b != "" ? 2 : 0) | (c != "" ? 1 : 0);
(是的,您应该使用 equals
或 isEmpty()
,而不是 !=
。这不是重点。
这给出了 0 到 7 范围内的数字,包括端值。
构造一个8元素的列表或数组,其中数字是你想要的值return。
然后,使用上面的 i
到 select 来自 list/array 的元素:
return list.get(i); // or array[i]
你不需要所有这些else
,你可以像这样让它更简洁明了:
if(a != "" && b != "" && c != "") return 1;
if(a != "" && b != "") return 2;
if(a != "" && c != "") return 3;
if(b != "" && c != "") return 4;
if(a != "") return 5;
if(b != "") return 6;
if(c != "") return 7;
return 8;