【发布时间】:2012-01-27 12:26:07
【问题描述】:
在这种情况下是否可以避免代码重复? (Java代码)
void f()
{
int r;
boolean condition = true;
while(condition)
{
// some code here (1)
r = check();
if(r == 0)
break ;
else if(r == 1)
return ;
else if(r == 2)
continue ;
else if(r == 3)
condition = false;
// some code here (2)
r = check();
if(r == 0)
break ;
else if(r == 1)
return ;
else if(r == 2)
continue ;
else if(r == 3)
condition = false;
// some code here (3)
}
// some code here (4)
}
int check()
{
// check a condition and return something
}
一个可能的解决方案可能是使用异常,但这似乎不是一个好的做法。
在这种情况下,有没有所谓的程序流控制的好模式?例如,一种从check() 函数内部调用break ; 的方法。
(可能在其他编程语言中)
【问题讨论】:
-
也许你可以创建一个递归函数,并在 r 等于 3 时回调一次。
-
退货和破案有什么区别?在while循环之后你有一些代码吗?
-
@ShaMan-H_Fel:是的,我愿意。但这对问题没有太大影响。
-
@Pf94 虽然有些人喜欢递归函数,但我不建议他们替换上面示例中的简单代码。使用递归时,调试变得非常讨厌。
标签: java design-patterns code-duplication control-flow