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