这是伪代码:
if A
then B
if C
then D
else
then E
else
then E
B,D,E包括几行。我们可以看到这里的“其他”重复了两次。如何删除重复的代码并维护该功能?不要使用“goto”。
答案 0 :(得分:1)
让它们成为一种功能。即。
void E() {
... Your several lines of code here
}
答案 1 :(得分:1)
if A
then B
if C
then D
if not (A and C)
then E
或
if A
then B
if (A and C)
then D
else
then E
答案 2 :(得分:1)
正如Ed Heal建议的那样,只需要做一个功能。
有时这是不实际的,因为需要传递大量变量,而且你真的只需要从两个地方调用它。
在这种情况下,您设置一个标志:
needE = 1
if A {
B
if C {
D
needE = 0
}
}
if needE {
E
}
这可能比以后重复逻辑的其他解决方案更可取,因为有时您的逻辑会产生副作用。你当然可以计算一次逻辑并存储结果,但这意味着更多的变量。
答案 3 :(得分:1)
使用布尔逻辑,这是一种方法:
if A
then B
if A and C
then D
if !A or !C
then E
答案 4 :(得分:0)
“隐藏的转到”怎么样?这样,您至少可以获得最少的必要布尔评估:
do
{
if (A)
{
B;
if (C)
{
D;
break;
}
}
E;
} while (0);