我的方法calculate(some params)
有if-elseif-else
个条件。对于每种情况,我都有一些与其他人共同的陈述。我不想重写那些台词。有没有办法回忆这些行,比如在calculate
方法中制作这些行的方法?
calculate(some params){
if(condition1){
specific tast 1 ;
specific tast 2 ;
common task ;
}else if(condtion2){
specific tast 3 ;
specific tast 4 ;
common task ;
}else if(condition3){
specific tast 5 ;
specific tast 6 ;
}else{
specific tast 7 ;
specific tast 8 ;
common task ;
}
}
注意:常见任务不适用于每个块。
答案 0 :(得分:2)
只需将你的common task ;
拉下来:
calculate(some params){
boolean doCommonTask = true;
if(condition1){
specific tast 1 ;
specific tast 2 ;
}else if(condtion2){
specific tast 3 ;
specific tast 4 ;
}else if(condition3){
specific tast 5 ;
specific tast 6 ;
doCommonTask = false; // Skip common task
}else{
specific tast 1 ;
specific tast 2 ;
}
if (doCommonTask) {
common task ;
}
}
答案 1 :(得分:0)
在Java中,不可能在方法中声明本地子范围方法(除非你用内部类做一些讨厌的技巧)。
最接近的是使用那些commont语句在同一个类上声明一个私有方法。
或者如果它只是一些语句并且在原始方法中包含它们不会使它太大(因此可读性较差)那么你可以简单地将它们放在if-else-if ... -else块之前或者在它之后,这些可以在所有块的开头或结尾分组。